2016-08-19 2 views
1

У меня есть двойной переменной (employeeSalary), и я хочу, чтобы проверить, если это значение больше, чем (>) ноль (0 ). Я могу придумать очень наивный способ написать этот код, но я не уверен, что для double тип данных это правильный способ записи.Простой способ проверить, если двойное значение больше нуля

if(employeeSalary > 0){ 
    // Employee salary is greater than zero. 
}else{ 
    // Employee salary is less than or equal to zero. 
} 

Может ли кто-нибудь сказать мне, работает ли этот подход?

+4

вы пробовали это? Это сработало? – OldCurmudgeon

+2

обязательно работа. – Qianyue

+0

Это должно сработать, но если вы действительно хотите использовать полноразмерную Java, вы можете использовать статический метод 'Double.compare (employeeSalary, 0.0)> 0', или вы знаете, просто используйте' employeeSalary> 0.0', если вы заинтересованы что '0! = 0.0' – EdgeCaseBerg

ответ

1

При сравнении значений double существуют значения, но с использованием > или < не проблема. Ваш код должен работать отлично.

Вы должны, однако, быть осторожными в использовании ==, поскольку есть много случаев края, где число, которое, как представляется, 0 не является (например, -0.0) и число фактически равно нулю (например, 0.0000...001), но по сравнению с == 0 потерпит неудачу ,

2

Если вы просто хотите сравнить примитивы, можно, конечно, сделать что-то вроде:

if(employeeSalary > 0.0){ 
    // Employee salary is greater than zero. 
}else{ 
    // Employee salary is less than or equal to zero. 
} 

Обратите внимание, что, если employeeSalary является двойным (примитивным), то вы должны действительно сравнить это с другими двойным, а не int.

Вы также можете использовать пару Двойные статические методы, чтобы сделать то же самое

// assuming employeeSalary is a double 

    if(Double.compare(employeeSalary, Double.valueOf(0.0)) > 0){ 
      // Employee salary is greater than zero. 
     }else{ 
      // Employee salary is less than or equal to zero. 
     } 

См: https://docs.oracle.com/javase/7/docs/api/java/lang/Double.html#compare(double,%20double)

+0

Зачем «employeeSalary> 0.0' лучше, чем' employeeSalary> 0'? И почему вы предлагаете «Double.compare (employeeSalary, Double.valueOf (0.0))> 0' ?! У метода 'Double.compare' есть немного отличная семантика, чем'> ', поэтому вы должны объяснить их, если вы считаете, что это полезно, в противном случае не рекомендую. И бокс второго аргумента через 'Double.valueOf (0.0)', просто для того, чтобы он был автоматически unboxed сразу же, не имеет никакого смысла вообще. – Holger

Смежные вопросы