タイトルが示唆するように、特定のDouble
が否定的であるかどうかをどうやって確認するのですか?ここではどのようにDouble
は、インスタンスDouble値が負であるかどうかを確認する方法?
(Double.parseDouble(data[2])
思考、提案を取得していますか?
タイトルが示唆するように、特定のDouble
が否定的であるかどうかをどうやって確認するのですか?ここではどのようにDouble
は、インスタンスDouble値が負であるかどうかを確認する方法?
(Double.parseDouble(data[2])
思考、提案を取得していますか?
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(data[2]);
はあなたにDouble
を与えるものではありません、それはdouble
を返します。あなたがDouble
にそれを割り当てているならば、それはオートバイによってそこに行きます。とにかくそれが負であるかどうかを見るために0と比較しますか? のように:
Double.parseDouble(data[2]) < 0;
Double.parseDouble
はdouble
(プリミティブ)を返していないDouble
。この場合、それは本当に重要ではありませんが、意識する価値があります。
あなたは使用することができます。
if (foo < 0)
は値が負であるかどうかを確認するために - 原因「ではない数」にはなく、このがが
の反対ではないことに注意してください値。しかし、それは無限の値で動作します。私はかなり好き
別の可能な解決策は、杓子定規なので
Double v = Double.parseDouble(data[2]);
if (v == Math.abs(v))
{
//must be positive
}
else
{
//must be negative
}
-0.0を処理することができず、 "x <0"よりもあまり明瞭ではないため、下降しています。 –
で、< 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は負数と同じ符号付きビットを持つことができます。
賢くない!それは絶対に正しいです、私は数回以上来て、絶対に0以上であると主張しています。重要なセクションでは、どのネガもギアにレンチを投げます。 1つの特定の負の数に対してx> = 0が成り立つことは、認識すべきことです。 – Tatarize
Cool。 Double.compareTo()は、0.0dが-0.0dよりも厳密に大きいと明示的にみなしていることに注意してください。 (また、Double.equals()も同じように動作します) – mwfearnley
@matthewfearnleyまた、 'Float' –
私はこれをダウンホーティングしていませんが、これは深刻な疑問ではありません... – dasblinkenlight
私が考えることができるのは、負の0のある厄介なコーナーケースがある場合ですが、まだ... –
確かに私は質問そのものに言及していたはずのコーナーがありました。そして、私は最初に試したものを入れておかなければならないということに同意します。もし誰かがこの質問を削除できたら、ここでそれを持つ価値がないので、 – Rachel