Некорректно передаются числа в массиве при json_encode

189
09 апреля 2022, 07:50

Есть PHP-скрипт, который передает результат вычисления в массив. Например $a[] = 2750*1.1

Затем я делаю

$out['numbers'] = $a;
echo json_encode($out,JSON_PRESERVE_ZERO_FRACTION);

Проблема в том, что на сервере с PHP 5.6 результат получается целым (в данном примере 3025), а на PHP 7.1 результат с дробной частью (3025.000000000005). Хотя параметр JSON_PRESERVE_ZERO_FRACTION должен устранять эту проблему, этого не происходит.

Answer 1

Точно должно устранять? :)

JSON_NUMERIC_CHECK (integer) Кодирование строк, содержащих числа, как числа. Доступно с PHP 5.3.3.

Если нужна целая часть, то

$a = floor(2750*1.1);

Если округлить, то

$a = round(2750*1.1); 

Если округлить в большую сторону

$a = ceil(2750*1.1);
READ ALSO
Тратится Промокод, не оплачивая товар

Тратится Промокод, не оплачивая товар

возникла проблема с сайтом и системой промокодовЕсть сайт, на нём человек вводит Промокод, нажимает Перейти к оплате, и сразу же возвращается...

89
Как в DetailView сделать строки с заголовками (одна ячейка, а не две)?

Как в DetailView сделать строки с заголовками (одна ячейка, а не две)?

В DetailView в своей дефолтной реализации всё выводится парами ключ->значение

112
Полное расхождение массивов по ключу в PHP

Полное расхождение массивов по ключу в PHP

Функция array_diff_keys() не совсем так работаетНужно чтобы результатом было полное расхождение

117