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

如标题所示,我如何检查特定的Double是否为负数。 这是我如何获得Double实例

 (Double.parseDouble(data[2]) 

想法,建议?

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

迂腐, < 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可以具有与负数相同的有符号位。

你可以测试它是否< 0

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

Double.parseDouble返回double (基元)而不是Double 。 在这种情况下它并不重要,但值得注意。

您可以使用:

 if (foo < 0) 

检查一个值是否为负 - 但要注意这不是相反的

 if (foo >= 0) 

由于“不是数字”的价值观。 它确实可以使用无限值​​。

 Double.parseDouble(data[2]); 

不给你一个Double ,它返回一个double 。 如果您将其分配给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 }