Следующее имеет необъяснимое поведение для меня в PHP 7.3.15:
При вычислении 0.012714 * 100
значение PHP равно 1.2714
, но выполняется сравнение и json_encode
в значение показывает, что истинное значение отличается.
Вот самый простой пример
<?php
var_dump((0.012714 * 100) === 1.2714); # false WHY? Because the real value is 1.2713999999999999
echo json_encode([(0.012714 * 100)]); # results in [1.2713999999999999]
Я действительно не понимаю, что происходит, это раньше работало безупречно в PHP 7.0 .
Я читал о json_encode и числах с плавающей запятой, но это не тот случай, так как сравнение также не удается.
Странно то, что это прекрасно работает с точно таким же кодом, но с числами уменьшено на 10%.
<?php
var_dump((0.12714 * 10) === 1.2714); # true
echo json_encode([(0.12714 * 10)]); # results in [1.2714]
Как вернуть старое поведение?