Bic*_*ick 0 java floating-point comparison epsilon
检查Float.compare(f1,f2)后,我发现它比较f1f2
并返回-1,0,1.
然后,如果值为-0.0,0.0或NAN,则返回-1,0,1.
这是什么意思-0.0?
我会期待类似的东西
return (Math.abs(f1 - f2) - 0.001f) > 0)
Run Code Online (Sandbox Code Playgroud)
其中0.001是给定的epsilon值.
谢谢.
NPE*_*NPE 10
-0.0是否为零,由IEEE 754标准规定.
如果您对如何产生这样的价值感到好奇,下面的文章很好地解释了它:http://www.savrola.com/resources/negative_zero.html
至于不采用epsilon值,这就是Float.compare设计工作的方式(这是一个精确的比较,而不是近似的比较).没有什么可以由具有一定另一个比较函数阻止你不采取ε和不执行近似的比较.
浮点数的精确和近似比较都有其用途.
至于你的实际代码,它遇到了很多问题:
Float.compare;NaNs;f1和f2参阅本文讨论)进行比较.我的观点不是要批评你的代码,而是要表明编写好的浮点代码比它最初看起来更难.
| 归档时间: |
|
| 查看次数: |
1078 次 |
| 最近记录: |