1. ホーム
  2. java

[解決済み] Double.MIN_VALUEが負でないのはなぜですか?

2022-04-22 23:45:16

質問

なぜそうなるのか、どなたか教えてください。 Double.MIN_VALUE は、実はダブルスが取ることのできる最小値ではないのでしょうか?これは正の値であり、Doubleはもちろん負になることもあります。

便利な数字であることは理解できるのですが、非常に直感的でない名前に思えます。 Integer.MIN_VALUE . 呼び方は Double.SMALLEST_POSITIVE または MIN_INCREMENT などにすれば、より明確な意味を持つことになります。

また、Doublesが取ることのできる最小値は何でしょうか?それは -Double.MAX_VALUE ? ドキュメントには書いていないようです。

解決方法は?

IEEE754形式は、1ビットが符号用に確保され、残りのビットが大きさを表します。これは、(負の値を1つ多く持つ整数値とは対照的に)origoを中心にquot;symmetrical"であることを意味します。したがって、最小値は最大値と同じで、符号ビットを変更しただけのものです。 はい , -Double.MAX_VALUE で表すことができる最小の実際の数です。 double .

のことでしょう。 Double.MAX_VALUE と見るべきでしょう。 最大マグニチュード この場合、単純に次のように書くことができます。 -Double.MAX_VALUE . また、なぜ Double.MIN_VALUE は最も小さい正の値である(これは可能な限り小さい大きさを表すから)。

でも確かに、このネーミングはちょっと誤解を招きそうですね。という意味に慣れていると Integer.MIN_VALUE を読んで、私も少し驚きました。 Double.MIN_VALUE は最小の 絶対 を表現することができる。おそらく彼らは 最小値を表す定数は不要と考えたのでしょう 単純に - から離れて MAX_VALUE :-)

(注意) Double.NEGATIVE_INFINITY しかし、これは特殊なケースであり、実際の数字を表すものではありませんから、ここでは無視します)。

これ は、このテーマに関する良いテキストです。