正如标题所示,我如何检查特定Double
是否为负数。这是获取Double
实例的方式
(Double.parseDouble(data[2])
想法、建议?
迂腐,< 0
不会给你所有的负数。
double d = -0.0;
System.out.println(d + " compared with 0.0 is " + Double.compare(d, 0.0));
System.out.println(d + " < 0.0 is " + (d < 0.0));
印刷
-0.0 compared with 0.0 is -1
-0.0 < 0.0 is false
-0.0
为负但不小于0.0
您可以使用
public static boolean isNegative(double d) {
return Double.compare(d, 0.0) < 0;
}
一个更有效但更迟钝的版本是检查有符号位。
public static boolean isNegative(double d) {
return Double.doubleToRawLongBits(d) < 0;
}
注意:在 IEEE-754 下,NaN 可以具有与负数相同的有符号位。
Double v = (Double.parseDouble(data[2]));
if (v<0){
//do whatever?
}
你可以测试它是否是< 0
:
if (Double.parseDouble(data[2]) < 0) {
// the number is negative
} else {
// the number is positive
}
Double.parseDouble
返回 a double
(原始)而不是 a Double
。在这种情况下,这并不重要,但值得注意。
您可以使用:
if (foo < 0)
检查一个值是否为负 - 但请注意这不是相反的
if (foo >= 0)
由于“不是数字”值。不过,它确实适用于无限值。
Double.parseDouble(data[2]);
不给你 a Double
,它返回 a double
。如果您将它分配给 a Double
,它会通过自动装箱到达那里。无论如何,看看它是否为负,将其与 0 进行比较?如:
Double.parseDouble(data[2]) < 0;
我非常喜欢的另一个可能的解决方案是
Double v = Double.parseDouble(data[2]);
if (v == Math.abs(v))
{
//must be positive
}
else
{
//must be negative
}