比较两个浮点值 - 不相同

时间:2014-04-10 20:41:12

标签: php compare

我有一个奇怪的问题,希望你能帮助我。

一开始我有两个值:

var_dump($order_sum);
var_dump($orders_obj->getOrders_preisliste_sum ());
var_dump($order_sum != $orders_obj->getOrders_preisliste_sum ());

结果:

float(49.7) 
string(7) "49.7000" 
bool(true)

这一切都没问题,但如果我比较一下,为什么这种方式也是“真的”?

var_dump($order_sum);
var_dump(floatval($orders_obj->getOrders_preisliste_sum ()));
var_dump($order_sum != floatval($orders_obj->getOrders_preisliste_sum ()));

结果:

float(49.7) 
float(49.7) 
bool(true) <---

在我看来它应该是相同的,但在这里PHP将它显示为不同的。

1 个答案:

答案 0 :(得分:2)

您可以使用bccomp函数(bcmath扩展名)来比较浮点值:http://www.php.net/manual/en/function.bccomp.php。 由于Adam刚才提到的浮点精度,你的值实际上并不相等。