Double
タイトルが示すように、特定が否定的かどうかを確認するにはどうすればよいですか。Double
インスタンスを取得する方法は次のとおりです
(Double.parseDouble(data[2])
考え、提案?
衒学的である< 0
ため、すべてが負の数になるわけではありません。
double d = -0.0;
System.out.println(d + " compared with 0.0 is " + Double.compare(d, 0.0));
System.out.println(d + " < 0.0 is " + (d < 0.0));
版画
-0.0 compared with 0.0 is -1
-0.0 < 0.0 is false
-0.0
負ですが、以下ではありません0.0
使用できます
public static boolean isNegative(double d) {
return Double.compare(d, 0.0) < 0;
}
より鈍いとしても、より効率的なバージョンは、符号付きビットをチェックすることです。
public static boolean isNegative(double d) {
return Double.doubleToRawLongBits(d) < 0;
}
注: IEEE-754 では、NaN は負の数と同じ符号付きビットを持つことができます。
Double v = (Double.parseDouble(data[2]));
if (v<0){
//do whatever?
}
あなたはそれがそうであるかどうかをテストすることができます< 0
:
if (Double.parseDouble(data[2]) < 0) {
// the number is negative
} else {
// the number is positive
}
Double.parseDouble
double
ではなく (プリミティブ) を返しますDouble
。この場合、それは実際には問題ではありませんが、注意する価値があります。
以下を使用できます。
if (foo < 0)
値が負かどうかを確認します - ただし、これは逆ではないことに注意してください
if (foo >= 0)
「数値ではない」値のため。ただし、無限の値でも機能します。
Double.parseDouble(data[2]);
を与えず、 をDouble
返しますdouble
。に割り当てている場合はDouble
、オートボクシングを介してそこに到達します。とにかく、それが負かどうかを確認するには、0 と比較しますか? 次のように:
Double.parseDouble(data[2]) < 0;
私が非常に気に入っている別の可能な解決策は
Double v = Double.parseDouble(data[2]);
if (v == Math.abs(v))
{
//must be positive
}
else
{
//must be negative
}