5

だから、私はPHPスクリプトを持っています:

<?
rand(1000000000000,9999999999999);

期待される結果は 13 桁の数字です。

しかし、次のように、いくつかの奇妙な数値を返しています。

987419207
1032717476
-455563764

誰が何が起こっているのか知っていますか?


PHP: 5.2.17

OS: Debian Squeeze と Windows 7 でテスト済み、どちらも 64 ビット


解決策(回避策)

<?
echo rand(10000,99999).rand(10000000,99999999);
4

3 に答える 3

5

getrandmax() を使用して、rand() から取得できる最大値を確認します。明らかにオーバーフローの問題です。

この int の 2 つを使用してより長いものを作成し、6 桁の場合は rand を呼び出し、7 桁の場合は再び rand を呼び出すことができます。

于 2012-12-10T14:21:41.487 に答える
4

10000000000000は有効な整数ではないと思います!

出力

getrandmax();
于 2012-12-10T14:21:17.647 に答える
0

BCMathGMPなどの bignum ライブラリを使用します。GMP は新しく、より優れた API を持っているようですが、それは私の意見です

于 2012-12-10T14:35:12.657 に答える