web-dev-qa-db-ja.com

PHPでfloatを文字列に変換しますか?

お気に入り:

float(1.2345678901235E + 19)=> string(20) "12345678901234567890"

できますか?

(json_decode用です...)

20
tweety
echo number_format($float,0,'.','');

注:これは整数用であり、余分な小数桁の場合は0を増やします

42
Karoly Horvath
$float = 0.123;
$string = sprintf("%.3f", $float); // $string = "0.123";
10
lubart

それが判明 - json_decode デフォルトでは、大きな整数を浮動小数点数としてキャストします。このオプションは、関数呼び出しで上書きできます。

$json_array = json_decode($json_string, , , 1);

私はこれをメインのドキュメントのみに基づいているので、テストして機能するかどうかを知らせてください。

2
Anthony

optionsパラメータに引数_JSON_BIGINT_AS_STRING_を渡すことでこの問題を解決しました。

json_decode($json, false, 512, JSON_BIGINT_AS_STRING)

json_decodeドキュメントの例5を参照してください

0
Astrotim

倍精度浮動小数点数には、有効桁数が約15桁しかありません。最善の方法は、余分な数字をゼロで埋めることです。

0
Alnitak