在Java中,如果舍入不一致,如何预测舍入错误?e、 g.0.03*100=10.029999,但10.05*100=10.0500001?

在Java中,如果舍入不一致,如何预测舍入错误?e、 g.0.03*100=10.029999,但10.05*100=10.0500001?,java,Java,所以,我才刚刚开始学习,我知道舍入误差问题在这里是最常见的。但我无法找到一个明确的答案来解释为什么会发生这种事情,或者更确切地说,我如何知道该寻找什么?我知道这是因为变量的存储方式,它们可以保留的小数位数是有限制的,但我不确定为什么每个数字的小数位数不同。除了那个解释,我再也找不到别的解释了 我的教科书警告我要小心舍入错误,我知道如何将它们修正到我想要的小数点。但我仍然想知道,我们如何做好准备,迎接可能发生的数字。在编程过程中,我们可以要求控制台打印以检查并确保我们的数字是正确的,但是否有某种方

所以,我才刚刚开始学习,我知道舍入误差问题在这里是最常见的。但我无法找到一个明确的答案来解释为什么会发生这种事情,或者更确切地说,我如何知道该寻找什么?我知道这是因为变量的存储方式,它们可以保留的小数位数是有限制的,但我不确定为什么每个数字的小数位数不同。除了那个解释,我再也找不到别的解释了

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

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

但10.03*100=1002.999999999

10.04*100=1003.999999999

10.05*100=1005.0000000000001

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


尽管已经(正确地)关闭了,但作为评论:“如果与二进制有关,为什么4不安全”这一观点在这里适用,值得一提:整数的属性不允许你对分数的属性得出任何结论。即使在数学中,整数和分数的规则也是非常不同的。而且,
.04
不是
4
。然后总是四舍五入到您需要的精度,或者使用BigDecimal