如何检查Double值是否为负值?

时间:2012-05-01 15:15:41

标签: java double

如标题所示,我如何检查特定Double是否为否定。以下是获取Double实例

的方法
(Double.parseDouble(data[2])

思考,建议?

6 个答案:

答案 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
}