Math.floor(Double.MIN_VALUE)== 0なのはなぜですか?誰かが私にFloor関数のJavaアルゴリズムを送ってくれるか、少なくともこの結果を説明してくれませんか?
1 に答える
16
Double.MIN_VALUE
あなたがそれが何を意味すると思うかを意味するのではありません。これは「最小の正のdouble
値」を意味します。したがって、当然、その「フロア」(値以下の最大の整数)を取得すると、0になります。ドキュメント:
タイプdoubleの最小の正の非ゼロ値を保持する定数2-1074。これは、16進浮動小数点リテラル0x0.0000000000001P-1022に等しく、Double.longBitsToDouble(0x1L)にも等しくなります。
名前が紛らわしいことに同意しますが、紛らわしい動作が見られたらすぐにドキュメントを確認する価値があります。
「最低」の有限値を取得したい場合はdouble
、を使用して-double.MAX_VALUE
ください。
于 2012-05-13T07:07:58.570 に答える