【发布时间】:2010-11-08 11:05:09
【问题描述】:
根据this java.sun page==是Java中浮点数的相等比较运算符。
但是,当我输入此代码时:
if(sectionID == currentSectionID)
进入我的编辑器并运行静态分析,我得到:“JAVA0078 与 =="
比较的浮点值使用== 比较浮点值有什么问题?正确的方法是什么?
【问题讨论】:
-
因为将浮点数与 == 进行比较是有问题的,所以将它们用作 ID 是不明智的;您的示例代码中的名称表明您正在执行此操作;长整数(longs)是首选,也是 ID 的事实标准。
-
是的,这只是一个随机示例,还是您实际上使用浮点数作为 ID?有什么原因吗?
-
"对于float字段,使用Float.compare方法;对于double字段,使用Double.compare。float的存在使得对float和double字段的特殊处理是必要的。 NaN、-0.0f 和类似的双精度常量;有关详细信息,请参阅 Float.equals 文档。”(Joshua Bloch:Effective Java)
标签: java equality floating-accuracy