5

数値は13911392101301011、使用に関係なくsprintfnumber_format同じ奇妙な結果が得られます。

sprintf('%017.0f', "13911392101301011"); // Result is 13911392101301012
number_format(13911392101301011, 0, '', ''); // Result is 13911392101301012

sprintf('%017.0f', "13911392101301013"); // Result is 13911392101301012
number_format(13911392101301013, 0, '', ''); // Result is 13911392101301012
4

5 に答える 5

0

ここでは大きな数を扱っているため、それらを文字列として保持し、BCMath 関数を使用して文字列値に対して数値演算を実行することができます。

$val = "13911392101301011";

echo $val; // 13911392101301011
echo bcadd($val, '4'); // 13911392101301015
echo bcmul($val, '2'); // 27822784202602022
于 2013-05-09T06:41:10.767 に答える
0

ドキュメントには、number_format の $numberは floatであると記載されているため、明示的な型キャストがあります。同等のものは次のようになります。

sprintf('%017.0f', (float) "13911392101301011");

Float は約14 桁の精度で、数値は 17 桁です。

于 2014-05-30T17:03:57.187 に答える