Java 检查双精度值是否大于零的简单方法

Java 检查双精度值是否大于零的简单方法,java,double,comparator,Java,Double,Comparator,我有一个双变量(employeeSalary),我想检查这个值是否大于(>)零(0)。我可以想出一种非常简单的方法来编写这段代码,但我不确定对于double数据类型,这是否是正确的编写方法 if(employeeSalary > 0){ // Employee salary is greater than zero. }else{ // Employee salary is less than or equal to zero. } 有人能告诉我这种方法是否有效吗?在比较双值时存

我有一个双变量(employeeSalary),我想检查这个值是否大于(>)零(0)。我可以想出一种非常简单的方法来编写这段代码,但我不确定对于double数据类型,这是否是正确的编写方法

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

有人能告诉我这种方法是否有效吗?

在比较
值时存在危险区域,但使用
如果您只是想比较原语,您当然可以这样做:

if(employeeSalary > 0.0){
  // Employee salary is greater than zero.
}else{
  // Employee salary is less than or equal to zero.
}
请注意,如果employeeSalary是一个双精度(原语),那么您应该将其与另一个双精度(而不是整数)进行比较

您还可以使用两个双静态方法来完成相同的任务

// 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.
        }

请参阅:

您试过了吗?这行得通吗?当然行。这应该行得通,但是如果你真的想使用详细的Java,你可以使用静态方法
Double.compare(employeeSalary,0.0)>0
,或者你知道,如果你担心
0!=0.0
在肯定的情况下,操作员
的含义与预期完全相同,
员工工资>0
员工工资
大于
0
时为
。当然,当
employeeSalary==0.00000000000000000000000001
时,该条件就满足了,如果
employeeSalary
0.00000000000000000001
短于此,则不满足该条件。问问自己,这种差异是否真的很重要,并得出结论,你永远不应该使用
双倍工资
。为什么
employeeSalary>0.0
employeeSalary>0
更好?你为什么建议
Double.compare(员工工资,Double.valueOf(0.0))>0
?!该方法具有双重属性。compare
的语义与
稍有不同,因此您应该解释它们,如果您认为这很有用,否则,不要推荐它。而通过
Double.valueOf(0.0)
来装箱第二个参数,只是让它在之后自动解除装箱,这毫无意义。