这是表达式:
if( Math.abs(GH1[i]) < Double.valueOf("1E-100") ){
.
.
.
}
所有变量都是double
类型。从代码中应该清楚我要比较的内容。我一直认为这在 java 中是正确的,因为编译器也从不显示任何错误。但我最近在这里读到,我不应该用它==
来比较浮点数。其他关系运算符也是如此吗?如果我不担心NaN
,我可以只使用内置的关系运算符而不是Double
orFloat
函数吗?
我可以使用如下所示的表达式吗?
if(GH1[i] < 0.0f) // if( Double.compare(GH1[i], 0.0f) < 0 )
tempSign = -1.0f;
else if(GH1[i] == 0.0f) // else if( Double.compare(GH1[i], 0.0f) == 0 )
tempSign = 0.0f;
else if(GH1[i] > 0.0f) // else if( Double.compare(GH1[i], 0.0f) > 0 )
tempSign = 1.0f;
还是必须使用 Double 和 Float 的函数?