お気に入り:
float(1.2345678901235E + 19)=> string(20) "12345678901234567890"
できますか?
(json_decode用です...)
echo number_format($float,0,'.','');
注:これは整数用であり、余分な小数桁の場合は0を増やします
$float = 0.123;
$string = sprintf("%.3f", $float); // $string = "0.123";
それが判明 - json_decode
デフォルトでは、大きな整数を浮動小数点数としてキャストします。このオプションは、関数呼び出しで上書きできます。
$json_array = json_decode($json_string, , , 1);
私はこれをメインのドキュメントのみに基づいているので、テストして機能するかどうかを知らせてください。
options
パラメータに引数_JSON_BIGINT_AS_STRING
_を渡すことでこの問題を解決しました。
json_decode($json, false, 512, JSON_BIGINT_AS_STRING)
倍精度浮動小数点数には、有効桁数が約15桁しかありません。最善の方法は、余分な数字をゼロで埋めることです。