1. 程式人生 > >(轉) 微信支付少一分錢 (bug)

(轉) 微信支付少一分錢 (bug)

再價格處理方面,往往是兩位小數換算成分,如18.90換算成分1890,直接乘以100也就行了,但是又使用了一個轉換為整數型別的函式intval() 這下子結果就不對了,如圖:

這是因為浮點型別的數字不能在不丟失一點兒精度的情況下通過內部二進位制轉換得到結果的,換句話說就是浮點型別的計算都會丟失精度的。 

該函式的解決方法手冊上也給出了,就是需要先使用strval() 函式將變數轉成字串型別

intval(strval($price*100)) = 1890 ;