首页 > 解决方案 > 在 Java 中,如果舍入不一致,我如何预见舍入错误?例如 0.03 * 100 = 10.029999 但 10.05 * 100 = 10.0500001?

问题描述

所以,我刚刚开始学习,我知道舍入错误问题在这里最常见。但是我找不到一个可以明确回答为什么会发生这种特殊事情的答案,或者更确切地说,我怎么知道要寻找什么?我知道这是因为变量的存储方式而发生的,并且它们可以保留多少小数位是有限制的,但我不确定为什么每个数字都不同。除了那个解释,我找不到更多的东西了。

我的教科书警告我要小心舍入错误,我确实知道如何将它们更正到我想要的小数位。但是,我仍然想知道我们如何为可能发生的数字做好准备。在编程过程中,我们可以要求控制台打印以检查并确保我们的数字是正确的,但是有没有办法在它发生之前“检测”它或者厌倦了哪些数字做什么?

有些数字没有舍入误差。示例:10.02 * 100 = 1002。

但是 10.03 * 100 = 1002.9999999999999

10.04 * 100 = 1003.9999999999999

10.05 * 100 = 1005.0000000000001

如果它与二进制有关,为什么 4 不安全?

这是我教科书中的一个片段:

标签: java

解决方案


推荐阅读