json_encode не корректно кодируется число

s-prosvirnin

Новичок
При установке константы JSON_NUMERIC_CHECK в функции json_encode любое число с плавующей точкой, в частности 0.6 отображается как 0.660000000000000031086244689504. Если убрать константу, то число отображается как строка '0.6'. Но, мне как раз нужно, чтобы числа были числами. Ето-нибудь сталкивался с подобной проблемой?
Причем, что интересно, половиннные числа, т.е. 0.5; 1.5 и т.д. с этой константой отображаются как надо.
 

Hello

Новичок
Проблема в вашей сборке php или аппаратной части
PHP:
echo json_encode(array(0.6, '0.6'), JSON_NUMERIC_CHECK); // [0.6,0.6]
 

Вурдалак

Продвинутый новичок
Че, прямо-таки 0.66? Что-то ты не договариваешь.
Можно precision поменьше поставить:
PHP:
ini_set('precision', 10);
 

s-prosvirnin

Новичок
Да, число 0.660000000000000031086244689504 было для значения 0.66, а не 0.6
О, действительно, я ставил ini_set('precision', 20); нужно было, чтобы числа большие отображались имеено числами. сейчас поставил в 16, это максимальное значение, при котором не добавляются знаки. причем, ставлю 17, добавляются сразу 15 знаков, а если поставить значение в 16, ничего не добавляется все нормально. Как-то странно. Мне хватит такого значения для чисел, но что делать, если нужно установить precision в значение больше 16.
 
Сверху