Некорректно экспортируются данные в json. Переменная хранит массив с float-числами. var_dump выводит следующее:
2823 =>
array (size=3)
'o' => int 3
'p' => string '58.9' (length=4)
'b' => float 6.6
2824 =>
array (size=3)
'o' => int 3
'p' => string '57.1' (length=4)
'b' => float 6.4
Это верно и при экспорте в json я ожидаю такие же значения. Но
echo json_encode($var)
выводит следующее:
"2823":{"o":3,"p":"58.9","b":6.600000000000001},"2824":{"o":3,"p":"57.1","b":6.4}
Видно, что элемент
b
в первом случае конвертируется не правильно, хотя во втором случае корректно. Это только 2 элемента из всего массива, но в большинстве случаев конвертируется именно криво.
Я понимаю, что если эту же строку с json запихнуть обратно в json_decode, то всё будет нормаль, но я строку с json печатаю в скрытый div и потом парсю с помощью
$.parseJSON($('#forang').text())
и в переменной получаю
2823:Object
b:6.600000000000001
o:3
p:"58.9"
2824:Object
b:6.4
o:3
p:"57.1"
--
Ещё заметила такой момент: если сделать просто
echo json_encode(['a'=>6.6]);
, то получается верно
{"a":6.6}
--
Суть вопроса - почему так происходит и как сделать так, чтобы конвертировалось всегда правильно и с таким количеством символов после запятой, сколько было в переменной.