オーバーフローによるものでしょうか?しかし、私の理解では、Math.random() は 1 未満の数値を返し、結果は 0xFFFFFFFF 未満になるはずです。
4 に答える
4
0xFFFFFFFF
2 の補数は-1
10 進数です。
そうです、とMath.random()
の間の数値を返します。だとします。次に、次のようになります。0
1
0.5
(int) (0.5 * -1)
which is (int)(-0.5)
which is which is0
にキャストしたときint
。
最大の正の数を使用する場合は、次のようにします。
(int) (Math.random() * 0x7FFFFFFF)
^
またはさらに良い
(int) (Math.random() * Integer.MAX_VALUE)
于 2013-07-03T13:27:40.050 に答える