PHP 7,3 числа с плавающей точкой некорректное поведение после расчета - PullRequest
0 голосов
/ 19 марта 2020

Следующее имеет необъяснимое поведение для меня в 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]

Как вернуть старое поведение?

...