[英]ArithmeticException: “Non-terminating decimal expansion; no exact representable decimal result”
[英]java.lang.ArithmeticException: Non-terminating decimal expansion
if (builderAggregateCalculationsType == AggregateCalculationsType.AGGREGATE_AVERAGE) {
BigDecimal quarterDivisor = new BigDecimal(3);
quarterDivisor = quarterDivisor.setScale(
aggregateCalculationsNumberOfDecimalPlaces,
RoundingMode.HALF_UP);
firstQuarterSum = firstQuarterSum.setScale(
aggregateCalculationsNumberOfDecimalPlaces,
RoundingMode.HALF_UP);
secondQuarterSum = secondQuarterSum.setScale(
aggregateCalculationsNumberOfDecimalPlaces,
RoundingMode.HALF_UP);
firstQuarterSum = firstQuarterSum.divide(quarterDivisor);
secondQuarterSum = secondQuarterSum.divide(quarterDivisor);
}
問題在於,除法結果產生的Non-terminating
分數。 1/3
東西會產生0.3333....
不會終止。
如果可以允許某些錯誤,則可以指定RoundingMode並使用它,
firstQuarterSum.divide(quarterDivisor, RoundingMode.HALF_UP); // Or any other rounding mode you prefer.
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.