Php 比较两个浮点值-不相同

Php 比较两个浮点值-不相同,php,compare,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) float(49.7) float(49.7)

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

一开始我有两个价值观:

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)
float(49.7) 
float(49.7) 
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) 
string(7) "49.7000" 
bool(true)
float(49.7) 
float(49.7) 
bool(true) <---
float(49.7)
浮动(49.7)

bool(true)您可以使用bccomp函数(bcmath扩展名)来比较浮点值:。
由于亚当刚才提到的浮点精度,您的值实际上并不相等。

。浮点精度比最初出现的更复杂。也可能提供一些见解。@Adam:它们都应该是
49.7000000000003
我一点也没想到。谢谢你的帮助。我已经四舍五入了这些值,现在一切都正确了。谢谢,我还没有使用过一个新功能。:-)