Like:
float(1.2345678901235E+19) => string(20) "12345678901234567890"
Can it be done?
(it's for json_decode...)
echo number_format($float,0,'.','');
注意:这是整数,额外的小数数字增加 0
$float = 0.123;
$string = sprintf("%.3f", $float); // $string = "0.123";
It turns out json_decode
by default casts large integers as floats. This option can be overwritten in the function call:
$json_array = json_decode($json_string, , , 1);
I'm basing this only on the main documentation, so please test and let me know if it works.
I solved this issue by passing the argument JSON_BIGINT_AS_STRING
for the options
parameter.
json_decode($json, false, 512, JSON_BIGINT_AS_STRING)
See example #5 in the json_decode documentation
The only way to decode a float without losing precision is to go through the json and frame all the floats in quotation marks. By making strings of numbers.
A double precision floating point number can only contain around 15 significant digits. The best you could do is pad the extra digits out with zeroes.
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.