gpt4 book ai didi

Java BigDecimal divergeAndRemainder 抛出除法不可能异常

转载 作者:行者123 更新时间:2023-12-01 17:46:08 25 4
gpt4 key购买 nike

查看此代码。它适用于像 704 这样的数字,但从 705 开始出现除法不可能错误:

import java.math.*;

public class Test {
public static void main(String[] argv) throws Exception {
BigDecimal totalDuration = new BigDecimal(705);

int scale = 2;
MathContext mc = new MathContext(scale, RoundingMode.HALF_UP);
System.out.println(totalDuration.divideAndRemainder(new BigDecimal(5), mc));
}
}

我使用的是 JDK 11。

抛出错误:

Exception in thread "main" java.lang.ArithmeticException: Division impossible
at java.base/java.math.BigDecimal.divideToIntegralValue(BigDecimal.java:1880)
at java.base/java.math.BigDecimal.divideAndRemainder(BigDecimal.java:2012)
at Test.main(Test.java:9)

最佳答案

您检查过 BigDecimal.divideAndRemainder 的文档吗?

它说:

throws ArithmeticException if the result is inexact but the rounding mode is UNNECESSARY, or mc.precision > 0 and the result of this.divideToIntgralValue(divisor) would require a precision of more than mc.precision digits.

所以int scale = 2;对于这个操作来说是不够的,如果你把它改为int scale = 3;,它就可以很好地工作。

关于Java BigDecimal divergeAndRemainder 抛出除法不可能异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55212584/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com