我正在使用 BigDecimal 执行简单的乘法运算,并且在乘以零时发现了一些奇怪的行为(在此用例中乘以零是正确的)。
基本数学告诉我,任何乘以零都将等于零(请参阅:零乘积属性和乘法属性)
但是,以下代码将始终失败并出现相同的错误:
assertEquals(new BigDecimal(0), new BigDecimal(22.3).multiply(new BigDecimal(0)));
java.lang.AssertionError: Expected :0 Actual :0E-48
这是 BigDecimal 的不准确之处,还是我在某处遗漏了一些特定的数学分支?
注意:在 IntelliJ 11 中运行的 JDK 1.6.0_27