Функции wp_send_json * делают странное преобразование значений с плавающей точкой - PullRequest
0 голосов
/ 02 января 2019

У меня есть метод, который делает простую математику и возвращает значение с плавающей точкой. Я использую это значение в качестве аргумента для функции wp_send_json(). Значения преобразуются таким образом, что я не понимаю.

$x = $calculator->getValue(); // Returns 3.02
$y = 3.02;

gettype($x); // Returns double
gettype($y); // Returns bouble

wp_send_json_success(%x); // prints {"success":false,"data":3.0199999999999996}
wp_send_json_success($y); // prints {"success":false,"data":3.02}

Я совсем не понимаю. И значения $x, и $y абсолютно одинаковы с точки зрения значений и типов. Так почему же выходные данные wp_send_json_success отличаются?


Обновление:

Теперь я еще больше запутался

$x === $y; // returns false
$x == $y; // returns false too!

Как это возможно? Когда я делаю var_dump, я вижу, что значения одинаковы.

1 Ответ

0 голосов
/ 02 января 2019

Это не имеет ничего общего с wp_send_json(). В моем коде значение 3.02, возвращаемое методом $calculator->getValue(), является результатом уравнения 10 - 6.98. Возвращает 3.0199999999999996, но когда я var_dump, то результат на экране округляется до 3.02. Вот почему $x == $y возвращает false.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...