我正在處理一個處理monetairy金額的PHP腳本,因此需要精確到2位小數。爲此,我將用戶輸入轉換爲一個數字,並將其乘以100,然後將其轉換爲int。這工作正常,直到我最近發現一個數字,當投到int時增加1。PHP(int)生成錯誤的數字
的故障代碼:
$number = (int)(str_replace(',','.',$_POST["input"])*100);
,讓問題的數量2509,22(我住在荷蘭,所以我們使用逗號爲小數,因此在上面的代碼行的str_replace函數)。 該值創建整數$ number 250921,顯然是1太低。 我知道,INT是有限制的,但這個數字是很好的限制之內就我所知...
爲什麼你需要將它設置爲int?這樣做的目的是什麼?這個int旁邊會發生什麼? – Andreas
我使用它來確保輸入不包含2位以上的小數。如前所述,這是財務信息,這是爲了防止用戶在金融系統中輸入小於可能的分數。 – Discoverer
改爲使用bcmath。除非您完全確定輸出結果並通過代碼判斷,否則絕對不要使用浮點操作,我相信您不會。您可以在這裏閱讀更多關於浮點數精度的信息http://php.net/manual/en/language.types.float.php –