java – 如何在需要使用float时实际避免浮点错误?
作者:互联网
我试图使用一些UI按钮来影响3D模型的转换,以将位置移动0.1或-0.1.
我的模型位置是一个三维浮点数,因此只需将0.1f添加到其中一个值就会导致明显的舍入误差.虽然我可以使用像BigDecimal这样的东西来保持精度,但我仍然必须将它从浮点数转换回到最后的浮点数,它总是会导致愚蠢的数字使我的UI看起来像一团糟.
我可以很好地显示显示的值,但是舍入错误只会随着更多编辑而变得更糟,并且它们使我的保存文件难以阅读.
那么当我需要使用浮点数时,如何才能真正避免这些错误呢?
解决方法:
我会使用Rational类.那里有很多 – this one看起来应该有用.
一个重要的成本是当Rational被渲染成浮点数时,以及当分母被缩减为gcd时.我发布的那个保持分子和分母始终处于完全缩小的状态,如果你总是增加或减去1/10,这应该是非常有效的.
This实现保持值标准化(即具有一致的符号)但未减少.
您应该选择最适合您使用的实施方案.
标签:java,floating-point,floating-accuracy,precision,floating-point-precision 来源: https://codeday.me/bug/20190703/1370199.html