双值的乘法产生意外行为?

时间:2018-06-01 15:10:23

标签: java double bigdecimal ieee-754

我正在编写测试用例,其中我看到了以下行为。如果有人可以用外行的话来形容这一点。添加标签IEEE 754.

70D * 1.1 = 77.0 50D * 1.1 = 55.00000000000001?

1 个答案:

答案 0 :(得分:2)

Double值为precision problem,您可以使用java.math.BigDecimal来获得准确的结果:

System.out.println(new BigDecimal("50").multiply(new BigDecimal("1.1"))); // 55.00