0
在我的申请中,我有一个与财务余额修改相关的过程,所以它被包装在一个事务中。在PHP中比较两个数字
而在操作结束之前,在提交事务之前,我有一个小检查 - 确保平衡已被正确修改。
public function setBalance($amount) {
// ......
// Updating balance code, nothing worst attention
// ......
$balance = $this->getBalance(false);
if ($amount != $balance) {
throw new Exception('Error updating balance! ' . $balance . " instead of " . $amount);
}
这个简单的代码会抛出异常。它说386.57不等于386.57。真。
我试图检查使用我最喜欢的var_dump
和die
有什么区别。
var_dump($balance - $amount);
die();
输出更是完美的事情:
float(-2.8421709430404E-13)
两个数字$balance
和$amount
是float
。
有人可以解释这种奇怪的行为,为什么会发生?有一些错误吗?
[PHP数学精密]的可能重复(http://stackoverflow.com/questions/3726721/php-math-precision) – AbraCadaver 2014-11-24 20:15:23
'floats'再次袭来。 – 2014-11-24 20:16:23