我在我的代碼中發現了一個錯誤。基本上我是回到客戶的金額減去1美分,我發現這是由於詮釋鑄造。有人可以解釋爲什麼會這樣嗎?PHP向下規則
$x = 9.53 * 100;
var_dump($x); // double(953)
var_dump((int)$x); // int(952)
此外,我發現這種情況並非發生在所有情況下。 例如:
echo (int)(9.52 * 100)//952
echo (int)(9.53 * 100)//952
echo (int)(9.54 * 100)//953
echo (int)(9.55 * 100)//955
我解決這個問題是先計算其丟字符串,並投它來詮釋,它似乎是工作
爲什麼你不簡單地回聲(9.52 * 100)。或者如果你想確定你沒有得到小數,你只需做下面的回合($ calculation,0)? – DaAmidza
我不知道爲什麼它像這樣工作,但爲了安全,我通常堅持'bcmath'。例如。 '$ result = bcmul(9.53,100);'(它返回字符串,但將其轉換爲浮點數不會中斷結果) – Volvox
@Arslan.H要點是要確定它發生的原因。 Volvox與我解決問題的方法類似。託託顯示了它發生的原因 – dixromos98