我有一个双变量( employeeSalary ),我想检查这个值是否大于(>)零( 0 )。我可以想到编写这段代码非常天真的方式,但我不确定对于 double 数据类型这是否是正确的写入方式。
if(employeeSalary > 0){
// Employee salary is greater than zero.
}else{
// Employee salary is less than or equal to zero.
}
有人可以告诉我这种方法是否有效吗?
答案 0 :(得分:2)
比较double
值时存在危险区域,但使用>
或<
不是问题。您的代码应该可以正常运行。
但是,您应谨慎使用==
,因为有许多边缘情况,其中似乎0
的数字不是(例如-0.0
)而且数字是有效的零(例如0.0000...001
)但与== 0
比较将失败。
答案 1 :(得分:2)
如果您只想比较原语,您当然可以执行以下操作:
if(employeeSalary > 0.0){
// Employee salary is greater than zero.
}else{
// Employee salary is less than or equal to zero.
}
请注意,如果employeeSalary是double(primitive),那么你应该将它与其他double而不是int进行比较。
您也可以使用一对Double静态方法来执行相同的操作
// 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)