簡體   English   中英

java.lang.ArithmeticException:無終止的十進制擴展

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM