我有一些代碼,它檢查我們賬戶上的付款金額是否與應該基於購買的項目相同。PHP:奇怪的類型轉換和舍入
下面是一些「僞」:
$income = $this->getIncome();
$invoiceSum = $order->getInvoiceSum();
if($income != $invoiceSum) echo "Error";
使我有「錯誤」的輸出,即使值是相同的。
$收入的價值來自Rest API(JSON),其中$ invoiceSum由我的代碼根據所有訂購產品的淨值乘以稅率計算得出。
如果我這樣做:
echo $income . " " . gettype($income) . "<br>";
echo $invoiceSum . " " . gettype($invoiceSum) . "<br>";
我得到:
19.71 double
19.71 double
這是我的期望。
所以我試圖計算爲intvalues(= Cent而不是€)。而現在怪異的一部分開始:
echo intval($income * 100);
echo intval($invoiceSum * 100);
,我也得到:
1970
1971
嗯?如何解決這個問題,所以我得到正確的價值?
它以紅色突出顯示的['float']的文檔(http://php.net/在manual/en/language.types.float.php#language.types.float.comparison)類型。 – axiac
而btw,['intval()'](http://php.net/manual/en/function.intval.php)不會輪到。它截斷。而這會讓你對浮點數如何陷入困境不瞭解。 – axiac
@bernhardh無法複製錯誤 – shashi