我有一個小型財務應用程序,PHP作爲前端,MySQL作爲後端。我有古老的偏見,我在MySQL中存儲貨幣價值爲整數美分。我的HTML表單允許輸入美元值,如「156.64」,我使用PHP將其轉換爲美分,然後將美分存儲在數據庫中。PHP的錢字符串轉換爲整數錯誤
我有一個函數可以清除表單中的美元值,並將其轉換爲美分。我去掉前導文本,去掉尾隨文本,乘以100並轉換爲整數。這最後一步是
$cents = (integer) ($dollars * 100);
這幾乎一切工作正常,除了像「156.64」,這始終轉換爲15663美分極少數的值。它爲什麼這樣做?
如果我這樣做:
$cents = (integer) ($dollars * 100 + 0.5);
那麼它始終工作。爲什麼我需要添加該舍入值?
此外,我對存儲金額的整數而不是浮點值的偏見是不再需要的嗎?現代浮動計算會產生足夠的圓整準確的貨幣值,以保持100%準確的會計?
錯誤。投擲輪。看到我的回覆 – 2010-01-14 12:32:20