【问题标题】:Compare two float values - not identical比较两个浮点值 - 不相同
【发布时间】:2014-04-10 20:41:11
【问题描述】:

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

我在开头有两个值:

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 显示为不同。

【问题讨论】:

标签: php compare


【解决方案1】:

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

【讨论】:

  • 谢谢,一个我还没用过的新功能。 :-)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-08-24
  • 2017-06-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-12-17
  • 1970-01-01
相关资源
最近更新 更多