Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/326.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java BigDecimal-算术异常,即使有精确的可表示结果_Java_Bigdecimal - Fatal编程技术网

Java BigDecimal-算术异常,即使有精确的可表示结果

Java BigDecimal-算术异常,即使有精确的可表示结果,java,bigdecimal,Java,Bigdecimal,我得到以下例外情况: BigDecimal bd1 = new BigDecimal(8757).divide(new BigDecimal(12)); 为什么会这样?除法的结果应该是729.75,它有一个终止的十进制扩展(.75)。我发现了问题所在。实际执行的代码如下所示: Caused by: java.lang.ArithmeticException: Non-terminating decimal expansion; no exact representable decimal re

我得到以下例外情况:

BigDecimal bd1 = new BigDecimal(8757).divide(new BigDecimal(12));

为什么会这样?除法的结果应该是729.75,它有一个终止的十进制扩展(.75)。

我发现了问题所在。实际执行的代码如下所示:

Caused by: java.lang.ArithmeticException: Non-terminating decimal expansion; no exact representable decimal result.

调用
divide()
方法时,
BD2
未初始化(我使用断点检查)。然而,我仍然认为有一个bug,因为在这种情况下它不应该抛出这个异常,这与正在发生的事情完全无关。我猜调用
divide()
时,
BD2
为空。

您确定这是原因吗?它工作得很好,至少对我来说是这样。你确定这就是你正在运行的代码吗?它在我的机器上运行得很好,这里返回729.75。相同。您使用的是什么版本的Java。您是否可以包括更多的细节,例如关于您在何处使用它的代码的其余部分?如果这有帮助,代码将在使用Eclipse运行单元测试时执行。JDK版本是1.8.0_66。这可能是一个错误。。。
public class ClassA {   
    public static final BigDecimal BD2= new BigDecimal(12);
}

public ClassB {
    public static final BigDecimal BD1 = new BigDecimal(8757);
    public static final BigDecimal RESULT = BD1.divide(ClassA.BD2);
}