2016-08-19 78 views
1

我有一個雙變量(employeeSalary),我想檢查這個值是否大於(>)零()。我可以想到用這種非常幼稚的方式編寫這段代碼,但我不確定是否對於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)'裝箱第二個參數,然後讓它自動取消裝箱,完全沒有意義。 – Holger

相關問題