wp_send_json *函数进行了奇怪的浮点值转换

时间:2019-01-02 16:43:59

标签: ajax wordpress

我有一个执行简单数学运算并返回浮点值的方法。我将此值用作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 :(得分:0)

wp_send_json()无关。在我的代码中,3.02方法返回的$calculator->getValue()值是10 - 6.98公式的结果。它返回3.0199999999999996,但是当我var_dump时,屏幕上的结果将四舍五入为3.02。这就是$x == $y返回false的原因。