Java 双重价值的倍增会产生意想不到的行为吗?
我正在编写测试用例,在其中我看到了以下行为。如果有人能用外行的术语来描述这一点。添加标签ieee754 70D*1.1=77.0 50D*1.1=55.00000000000001?双精度值,您可以使用Java 双重价值的倍增会产生意想不到的行为吗?,java,double,bigdecimal,ieee-754,Java,Double,Bigdecimal,Ieee 754,我正在编写测试用例,在其中我看到了以下行为。如果有人能用外行的术语来描述这一点。添加标签ieee754 70D*1.1=77.0 50D*1.1=55.00000000000001?双精度值,您可以使用java.math.BigDecimal获得准确的结果: System.out.println(new BigDecimal("50").multiply(new BigDecimal("1.1"))); // 55.00 奥班克:但实际上,浮点的这个“问题”是你应该能够自己查的;这是一个关于某
java.math.BigDecimal
获得准确的结果:
System.out.println(new BigDecimal("50").multiply(new BigDecimal("1.1"))); // 55.00
奥班克:但实际上,浮点的这个“问题”是你应该能够自己查的;这是一个关于某某和整个网络的多重重复问题。可能是我试过的@RudyVelthuis的重复。在
java版本“10.0.1”
上,它可以正常工作。这一个可以,因为对于valueOf()
,java使用往返格式。对于其他值,这仍然注定会失败。使用FP引入的不精确性不能总是通过valueOf()
来“纠正”。