Столкнулся с интересной особенностью json_encode
Вместо "1.7", мне сервер выдал "1.7000000000000002". Проблема не только с json_encode, но и другими "serialize" функциями, которые выводят числа с плавающей запятой (float, десятичные числа например). Дело в параметре PHP serialize_precision, начиная с версии 7.1
Мне помогло изменение значения с "-1" на "14"
Код для проверки
$ar = [ 96 => 0.5, 97 => 0.4, 98 => 0, 99 => 0.8, 100 => 0, 101 => 0, 102 => 0, 103 => 0, 104 => 0, ]; $sum = array_sum($ar); echo $sum.'<br />'; // 1.7 echo json_encode($sum); // 1.7000000000000002
А если изменить параметр precision в php.ini, то можно "сломать" и обычный вывод float числа :)
Есть вопросы или нашли ошибку? Напишите комментарий (можно без регистрации), отвечать стараюсь быстро.