Ce n'est pas une question car il s'agit plus d'un être conscient. J'ai mis à jour une application qui utilise json_encode()
PHP7.1.1 et je voyais un problème avec les flotteurs modifiés pour parfois étendre 17 chiffres. Selon la documentation, PHP 7.1.x a commencé à utiliser serialize_precision
au lieu de la précision lors de l'encodage de valeurs doubles. Je suppose que cela a causé un exemple de valeur de
472,185
devenir
472.18500000000006
après que cette valeur soit passée json_encode()
. Depuis ma découverte, je suis revenu à PHP 7.0.16 et je n'ai plus le problème avec json_encode()
. J'ai également essayé de mettre à jour PHP 7.1.2 avant de revenir à PHP 7.0.16.
Le raisonnement derrière cette question provient de PHP - Floating Number Precision , mais la fin de toute raison en est due au passage de la précision à l'utilisation de serialize_precision dans json_encode()
.
Si quelqu'un connaît une solution à ce problème, je serais plus qu'heureux d'écouter le raisonnement / la solution.
Extrait du tableau multidimensionnel (avant):
[staticYaxisInfo] => Array
(
[17] => stdClass Object
(
[variable_id] => 17
[static] => 1
[min] => 0
[max] => 472.185
[locked_static] => 1
)
)
et après avoir traversé json_encode()
...
"staticYaxisInfo":
{
"17":
{
"variable_id": "17",
"static": "1",
"min": 0,
"max": 472.18500000000006,
"locked_static": "1"
}
},
ini_set('serialize_precision', 14); ini_set('precision', 14);
le ferait probablement sérialiser comme avant, mais si vous comptez vraiment sur une précision spécifique sur vos flotteurs, vous faites quelque chose de mal.