如何检查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 }