[英]Error with BigDecimal
有人可以告诉我问题在哪里?
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
问题是除法的结果是一个无终止的十进制数字,不能完全按原样在BigDecimal
中表示(因为这将需要无限量的内存)。
因此,您需要使用BigDecimal.divide
的两个(或三个)参数版本来限制其十进制数字的位数,例如
interval = diff.divide(N, 3, RoundingMode.HALF_DOWN).doubleValue();//line26
(这会将结果四舍五入为3个十进制数字。)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.