如标题所示,我如何检查特定Double
是否为否定。以下是获取Double
实例
(Double.parseDouble(data[2])
思考,建议?
答案 0 :(得分:36)
迂腐,< 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可以具有与负数相同的有符号位。
答案 1 :(得分:20)
Double v = (Double.parseDouble(data[2]));
if (v<0){
//do whatever?
}
答案 2 :(得分:6)
您可以测试它是< 0
:
if (Double.parseDouble(data[2]) < 0) {
// the number is negative
} else {
// the number is positive
}
答案 3 :(得分:4)
Double.parseDouble
返回double
(原始)而不是Double
。在这种情况下,它并不重要,但值得注意。
您可以使用:
if (foo < 0)
检查某个值是否为负值 - 但要注意此与
不相反if (foo >= 0)
由于“非数字”值。它确实适用于无限值。
答案 4 :(得分:2)
Double.parseDouble(data[2]);
没有给你Double
,它会返回double
。如果您将其分配给Double
,它会通过自动装箱进入。{1}}。无论如何看它是否为负,将它与0比较?
如:
Double.parseDouble(data[2]) < 0;
答案 5 :(得分:0)
我非常喜欢的另一种可能的解决方案是
Double v = Double.parseDouble(data[2]);
if (v == Math.abs(v))
{
//must be positive
}
else
{
//must be negative
}