2012-05-13 3 views
-5

なぜMath.floor(Double.MIN_VALUE)== 0ですか? フロア関数のJavaアルゴリズムを送ってもらえますか、少なくともこの結果を説明してください。Math.floor(Double.MIN_VALUE)について

+6

すべての敬意を表しますが、['Double.MIN_VALUE'](http://docs.oracle.com/javase/7/docs/api/java/lang/Double.html#MIN_VALUE)のドキュメントを一目惚れしています。 )と(その時点で必要な場合)['Math.floor'](http://docs.oracle.com/javase/7/docs/api/java/lang/Math.html#floor(double))あなたのためにこれに答えるでしょう。 –

+0

Double.MIN_VALUEは0に非常に近いので、切り捨てると0になります。 –

答えて

16

Double.MIN_VALUEは、あなたが何を意味するのかを意味するものではありません。これは、「最小の正double値」を意味します - あなたはそれの「床」(以下の値に等しい最大の整数)を取るときに、当然、あなたは0ドキュメント取得します:

一定の保持をdouble型の最小正の非ゼロ値、2 -1074これは、16進浮動小数点リテラル0x0.0000000000001P-1022に等しく、Double.longBitsToDouble(0x1L)にも等しくなります。

名前が混乱していると私は同意しますが、混乱した動作を見てすぐにドキュメントをチェックする価値があります。

「最低」有限のdoubleを取得する場合は、-double.MAX_VALUEを使用してください。

+0

...合意しました。マウスをMIN_VALUEに「ホバー」すると、その最も深い秘密が明らかになります。 :-) –

+0

@Jonこの便利な説明のためにたくさんのおかげで – Zitamina

関連する問題