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