【发布时间】:2019-11-15 14:55:31
【问题描述】:
这似乎是一个我可以轻松找到答案的问题,但我看不到任何条目。我知道浮点运算是如何工作的,为了比较浮点数,我需要使用 epsilon 检查。当我与我的团队分享这个问题时,我的一位同事问我这个问题,我无法回答。
Java 上的 compare 方法是否总是产生正确的结果,即对 f1 和 f2 进行 epsilon 检查会产生的结果?
Float.compare(float f1, float f2);
注意:特别考虑这个问题的平等情况。
【问题讨论】:
-
您能告诉我们什么是 epsilon 检查吗?我试图搜索它,但我什么也没找到
-
它没有。它为
f1 < f2返回 -1,为f1 > f2返回 1。 -
@ControlAltDel 我认为他的意思是docs.microsoft.com/en-us/dotnet/api/…
-
当您检查两个浮点数是否相等时,== 运算符可能不会因为浮点精度而给您正确的结果。相反,您想定义一个非常小的 epsilon 值(如 0.00001)并检查它们的绝对差是否小于 epsilon。
-
不采用任何 epsilon 值的方法如何返回与 epsilon 检查相同的东西,根据定义,使用 epsilon,可能是 0.00001、0.1 或 2089? javadoc 告诉方法返回什么:docs.oracle.com/javase/8/docs/api/java/lang/…
标签: java floating-point