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

Есть 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 должен устранять эту проблему, этого не происходит.


Ответы (1 шт):

Автор решения: Sergey Tatarincev

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

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

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

$a = floor(2750*1.1);

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

$a = round(2750*1.1); 

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

$a = ceil(2750*1.1);
→ Ссылка