2

9769712680 バイトをギガバイトに変換しようとしています。次のコードがあります。

$value = 9769712680 / (1024 * 1024 * 1024);

これは 9 Gb の値を与えるはずですが、代わりに 2047 Mb (または 2 Gb) を与えます。

も試しました:9769712680 / 1024 / 1024 / 1024しかし、これも同じことをします。

何か案は?

4

4 に答える 4

5

9769712680-ここに整数オーバーフローがあるため2^31、最大int値になります。

于 2013-03-19T22:17:06.963 に答える
0

初期番号は として表されているようint32です。いくつかの計算を行う (Matlab を使用):

9769712680/(1024*1024*1024) = 9.09875396639109

double(int32(9769712680))/(1024*1024*1024) = 2
于 2013-03-19T22:19:17.157 に答える
0

BCMath ライブラリを使用できます。

$bytes = '976971268097697126809769712680976971268097697126809769712680';
$Gb = bcdiv($bytes, bcpow(1024, 3), 2);
echo $Gb; // 909875396730096197509923682250992368225099236822509.92
于 2013-03-19T22:32:17.010 に答える
0

これが正しく表現されていない理由がわかりません(私にとってはうまくいきます)。
いずれにせよ、一般的に PHP でコンパイルされるBC Math ライブラリを使用して、任意の長さの数値で方程式を解くことができます。

あなたの場合、次のようになります。

$value = bcdiv('9769712680', '1073741824', 4); /// 1024^3=1073741824
于 2013-03-19T22:31:37.407 に答える