This isn't a question as it is more of a be aware. I updated an application that uses json_encode()
to PHP7.1.1 and I was seeing an issue with floats being changed to sometimes extend out 17 digits. According to documentation, PHP 7.1.x started to use serialize_precision
instead of precision when encoding double values. I'm guessing this caused an example value of
472.185
to become
472.18500000000006
after that value went through json_encode()
. Since my discovery, I have reverted back to PHP 7.0.16 and I no longer have the issue with json_encode()
. I also tried to update to PHP 7.1.2 before reverting back to PHP 7.0.16.
The reasoning behind this question does stem from PHP - Floating Number Precision, however the end all reason for this is because of the change from precision to serialize_precision usage in json_encode()
.
If anyone does know of a solution to this problem, I'd be more than happy to listen in on the reasoning/fix.
Excerpt from multidimensional array (before):
[staticYaxisInfo] => Array
(
[17] => stdClass Object
(
[variable_id] => 17
[static] => 1
[min] => 0
[max] => 472.185
[locked_static] => 1
)
)
and after going through json_encode()
...
"staticYaxisInfo":
{
"17":
{
"variable_id": "17",
"static": "1",
"min": 0,
"max": 472.18500000000006,
"locked_static": "1"
}
},
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…