PHP-плавающие файлы не сохраняются в переменную и не отражаются точно - PullRequest
0 голосов
/ 10 мая 2018

Недавно моя локальная среда начала отображать / сохранять числа с плавающей запятой с двумя десятичными точками с дополнительной строкой чисел в конце, что приводит к неточным числам.Такое поведение недавно;Раньше он вел себя правильно.Я не могу думать ни о чем особенно изменившемся.

Для действительно простого примера:

echo 18.99;

Это выводит:

18.989999999999998

Когда я json_encode массив со значением, проблема усугубляется:

[18.989999999999998436805981327779591083526611328125]

Любая идея, что может быть причиной этой проблемы, и какЯ мог бы это исправить?PHP 7.1, MacOS High Sierra 10.13.2, если это поможет.Кроме того, я использую Laravel 5.5 в качестве своего фреймворка.

В некоторых исследованиях, которые я уже провел, я попытался изменить настройку php_ini для precision на 12, 14 и 17соответственно.Без изменений.

РЕДАКТИРОВАТЬ: я видел другие вопросы, касающиеся точности чисел с плавающей запятой в PHP и других языках, но, как я уже говорил, это поведение недавно, поэтому я не верю, что этопросто врожденный недостаток языка.

1 Ответ

0 голосов
/ 10 мая 2018

Для любых будущих пользователей Google: в моем случае проблема заключалась в том, что настройки php.ini для precision и serialize_precision были неправильными (ну, для моих нужд).Как они изменились, я не знаю;но установка каждого из них на 14 решила проблему.

...