empty basket
Ваша корзина пуста
Выберите в каталоге интересующий товар
и нажмите кнопку «В корзину».
Перейти в каталог
empty delayed
Отложенных товаров нет
Выберите в каталоге интересующий товар
и нажмите кнопку
Перейти в каталог
Заказать звонок
+7 (499) 408 08 75
г. Люберцы, Октябрьский пр-т, 111/119
пн-сб: 10:00-18:00
Заказать звонок

Почему в json_encode числовое значение с плавающей точкой меняется

30 сен 2023
Заметка: при работе с ценами в формате json столкнулся с проблемой при плавающей точке в цене, где цена превращалась в 14+ цифр. Решение найдено!
Почему в json_encode числовое значение с плавающей точкой меняется
Заметка: при работе с ценами в формате json столкнулся с проблемой при плавающей точке в цене, где цена превращалась в 14 и более цифр, пример:

{"price":2849,"price_2":1199,"price_3":34.99000000000000198951966012828052043914794921875,"price_4":749,"price_5":169}
Правильное отображение, а также содержание массива изначально:

{"price":2849,"price_2":1199,"price_3":34.99,"price_4":749,"price_5":169}
Позже я выяснил, что это связано с настройкой serialize_precision в PHP. Решение проблемы с плавающей точкой заключается в добавлении директивы в php.ini:

serialize_precision = -1
Теперь json_encode работает правильно со значениями с плавающей точкой, не округляя дополнительно эти значения.