2016-08-19 3 views
1

二重変数(employeeSalary)があり、この値がゼロ()より大きいかどうかをチェックしたいと思います。私は非常に素朴なこのコードを書く方法を考えることができますが、私はダブルのデータ型これは正しい方法を書くかどうかわからないです。double値が0より大きいかどうかを確認する簡単な方法

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

誰でもこのアプローチが有効かどうか教えてください。

+4

は、あなたがそれを試してみました:

また、同じ

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

参照を行うにはカップルダブル静的メソッドを使用することができますか?それは動作しましたか? – 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

あなただけのプリミティブを比較したい場合は、あなたは確かに何かのように行うことができます:employeeSalaryは(プリミティブ)の二重であるならば、あなたが本当にではなく、他の二重にこれを比較する必要があり、こと

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

注意をint。 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)を介して2番目の引数をボクシングすると、直後に自動的にアンボックスされるようにするだけでは意味がありません。 – Holger

関連する問題