Rog*_*ger 3 java floating-point double
我有2个数字存储为Double,1.4300和1.4350.当我减去1.4350 - 1.4300时,它给出了结果:0.0050000000000001155.为什么它会在最后添加1155,如何解决这个问题,使其返回0.005或0.0050?我不确定舍入是否有效,因为我使用的是2和4的十进制数.
Jac*_*erk 13
哦,我喜欢这些...这些都是由双重表示中的不准确引起的,浮点运算充满了这些.它通常由二进制中的重复数字(即base-2浮点表示)引起.例如,在十进制1/3 = 0.3333'中,二进制1/10是一个重复数字,这意味着它不能完美表示.试试这个:1 - 0.1 - 0.1 - 0.1 - 0.1.你不会得到0.6 :-)
要解决这个问题,请使用BigDecimal(首选)或通过先将其乘以10000之类的方法来操纵double,然后将其四舍五入然后再将其分割(不太干净).
好问题......它在过去造成了巨大的问题.导弹过冲目标,卫星在发射后坠毁等.在网上搜索一些,你会惊讶的!
| 归档时间: |
|
| 查看次数: |
1843 次 |
| 最近记录: |