Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/337.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何检查舍入错误?_Java_C_Floating Point - Fatal编程技术网

Java 如何检查舍入错误?

Java 如何检查舍入错误?,java,c,floating-point,Java,C,Floating Point,这可能是一个愚蠢的问题:在使用float时,对小数位数进行舍入,如何检查舍入错误(最好是在java或C中)?如果您有任何建议,我们将不胜感激。好吧,您可以在不舍入的情况下进行操作,并比较结果。例如,在java中,您可以在使用float完成操作后使用它来执行操作。。。然后看看你是否会得到同样的号码 一个更好的问题是,你为什么要这样做?浮动经常会进行奇怪的循环,你不想在任何需要精确的地方使用它(例如,在银行交易中)。在这种情况下,使用大小数。但是,如果您只想在屏幕上表示一个3D点,1.5舍入到1.4

这可能是一个愚蠢的问题:在使用float时,对小数位数进行舍入,如何检查舍入错误(最好是在java或C中)?如果您有任何建议,我们将不胜感激。

好吧,您可以在不舍入的情况下进行操作,并比较结果。例如,在java中,您可以在使用float完成操作后使用它来执行操作。。。然后看看你是否会得到同样的号码


一个更好的问题是,你为什么要这样做?浮动经常会进行奇怪的循环,你不想在任何需要精确的地方使用它(例如,在银行交易中)。在这种情况下,使用大小数。但是,如果您只想在屏幕上表示一个3D点,1.5舍入到1.499997不会改变任何东西…

有一个技巧,您可以更改舍入模式,重复计算,然后查看结果是否相同(如果不相同,则差异会让您了解算法的数值稳定性)。如果受支持,您可以使用
中的
fesetround
在C中执行此操作。但是“舍入发生了吗?”的答案几乎总是“是的”,因此,如果你只是假设它发生了,那么你就不会失去太多的概括性,并且继续思考它对结果的影响有多大;-)