首页 > ecshop > 如何避免在php中使用float跟intval函數時有時候會少1
2013
10-20

如何避免在php中使用float跟intval函數時有時候會少1

之前在Ecshop中找優惠金額都會少1元,雖然解決了,但是不知道是什麼原因造成,所以就模擬在Ecshop的寫了一個例子從1折到9折的所有結果,發現在float中如果有運算時,再使用intval時就會發現這個問題,例如10/3=3.33333…但是把它乘3會變成9.999999,顯示是1,但是實際是存9.99,用無條件捨去就會變成9,造成少1的情形,解決方法就是在使用intval前加入強制轉型成字串就會正常。

如何避免在php中使用float跟intval函數時有時候會少1 - 第1张  | 彰化一整天blog

1.從float(40)到float(10)經過intval結果都會少1

如何避免在php中使用float跟intval函數時有時候會少1 - 第2张  | 彰化一整天blog

2.因為用了(1-$rate)的運算所以造成少1元的情形

如何避免在php中使用float跟intval函數時有時候會少1 - 第3张  | 彰化一整天blog

3.修改過的結果都正常

如何避免在php中使用float跟intval函數時有時候會少1 - 第4张  | 彰化一整天blog

4.在使用intval時將float轉型成string就會正常

同步發表於:如何避免在php中使用float跟intval函數時有時候會少1
最后编辑:
作者:明和 蔡
这个作者貌似有点懒,什么都没有留下。

留下一个回复

你的email不会被公开。