有人可以说我在哪里有问题吗?
double interval;
BigDecimal diff = BigDecimal.valueOf(17);
int n=39;
BigDecimal N = BigDecimal.valueOf(n);
interval = diff.divide(N).doubleValue();//line26
System.out.println(interval);
Run Code Online (Sandbox Code Playgroud)
我有这个错误
Exception in thread "main" java.lang.ArithmeticException: Non-terminating decimal expansion; no exact representable decimal result.
at java.math.BigDecimal.divide(BigDecimal.java:1603)
at newlogoot.class.main(class.java:26)
Java Result: 1
Run Code Online (Sandbox Code Playgroud)
问题是除法的结果是一个非终止的十进制数,它不能完全用BigDecimal原样表示(因为它需要无限量的存储器).
因此,你需要限制它的十进制数字使用双数(或三)的参数的版本BigDecimal.divide,例如
interval = diff.divide(N, 3, RoundingMode.HALF_DOWN).doubleValue();//line26
Run Code Online (Sandbox Code Playgroud)
(这会将结果舍入为3位小数.)
| 归档时间: |
|
| 查看次数: |
100 次 |
| 最近记录: |