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

Rac*_*hel 9 java double

正如标题所示,我如何检查特定Double是否是否定的.以下是获取Double实例的方法

(Double.parseDouble(data[2])
Run Code Online (Sandbox Code Playgroud)

想法,建议?

Pet*_*rey 40

迂腐,< 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));
Run Code Online (Sandbox Code Playgroud)

版画

-0.0 compared with 0.0 is -1
-0.0 < 0.0 is false
Run Code Online (Sandbox Code Playgroud)

-0.0 是消极但不低于 0.0

您可以使用

public static boolean isNegative(double d) {
     return Double.compare(d, 0.0) < 0;
}
Run Code Online (Sandbox Code Playgroud)

一个更有效的,如果更钝的版本是检查签名位.

public static boolean isNegative(double d) {
     return Double.doubleToRawLongBits(d) < 0;
}
Run Code Online (Sandbox Code Playgroud)

注意:在IEEE-754下,NaN可以具有与负数相同的有符号位.

  • 不学究气!这是绝对正确的,我已经多次出现 -0.0 并坚持认为它绝对大于或等于 0,在关键部分,任何负面都会在齿轮中引发扳手。对于一个特定的负数,x &gt;= 0 是正确的,这是人们应该意识到的。 (2认同)

sja*_*ski 19

Double v = (Double.parseDouble(data[2]));
if (v<0){
//do whatever?
}
Run Code Online (Sandbox Code Playgroud)

  • 这个答案是不正确的。见下文。 (4认同)

Dar*_*rov 5

您可以测试它是否< 0:

if (Double.parseDouble(data[2]) < 0) {
    // the number is negative
} else {
    // the number is positive
}
Run Code Online (Sandbox Code Playgroud)