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);我有这个错误
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发布于 2012-04-25 23:50:14
问题是除法的结果是一个非终止的十进制数,它不能在BigDecimal中按原样完全表示(因为这需要无限的内存)。
因此,您需要使用两个(或三个)参数版本的BigDecimal.divide限制其小数位数,例如
interval = diff.divide(N, 3, RoundingMode.HALF_DOWN).doubleValue();//line26(这会将结果四舍五入为3位小数。)
https://stackoverflow.com/questions/10319112
复制相似问题