Java 如何检查舍入错误?
这可能是一个愚蠢的问题:在使用float时,对小数位数进行舍入,如何检查舍入错误(最好是在java或C中)?如果您有任何建议,我们将不胜感激。好吧,您可以在不舍入的情况下进行操作,并比较结果。例如,在java中,您可以在使用float完成操作后使用它来执行操作。。。然后看看你是否会得到同样的号码Java 如何检查舍入错误?,java,c,floating-point,Java,C,Floating Point,这可能是一个愚蠢的问题:在使用float时,对小数位数进行舍入,如何检查舍入错误(最好是在java或C中)?如果您有任何建议,我们将不胜感激。好吧,您可以在不舍入的情况下进行操作,并比较结果。例如,在java中,您可以在使用float完成操作后使用它来执行操作。。。然后看看你是否会得到同样的号码 一个更好的问题是,你为什么要这样做?浮动经常会进行奇怪的循环,你不想在任何需要精确的地方使用它(例如,在银行交易中)。在这种情况下,使用大小数。但是,如果您只想在屏幕上表示一个3D点,1.5舍入到1.4
一个更好的问题是,你为什么要这样做?浮动经常会进行奇怪的循环,你不想在任何需要精确的地方使用它(例如,在银行交易中)。在这种情况下,使用大小数。但是,如果您只想在屏幕上表示一个3D点,1.5舍入到1.499997不会改变任何东西…有一个技巧,您可以更改舍入模式,重复计算,然后查看结果是否相同(如果不相同,则差异会让您了解算法的数值稳定性)。如果受支持,您可以使用
中的fesetround
在C中执行此操作。但是“舍入发生了吗?”的答案几乎总是“是的”,因此,如果你只是假设它发生了,那么你就不会失去太多的概括性,并且继续思考它对结果的影响有多大;-)