Проблема нечастая, но неприятная, т.к. непонятно почему самое обычное дробное число в JSON превращается в дробное число с дополнительными незначащими цифрами.
Чтобы проверить наличие проблемы, выполните этот простой код:
print(json_encode(['depth' => 7.7]));
Если Вы видите {"depth":7.7} - значит, всё в порядке.
Но если Вы видите что-то вроде {"depth":7.70000000000000017763568394002504646778106689453125} - это плохо.
Проблема заключается в PHP-параметре serialize_precision - он регулирует количество сохраняемых значащих цифр при сериализации и работе с JSON. Значение -1 говорит об использовании современного алгоритма, при котором в подобных случаях всё будет хорошо. Другие значения говорят о том, что в подобных случаях могут быть проблемы.
Для решения проблемы необходимо всего лишь задать для сайта PHP-параметр serialize_precision равным -1 (минус единица).
Возврат к списку