1 2 3 4 5 6

廣告

網友您好,若是您覺得我寫的工具或文章對您有幫助,
而您或者您的朋友有在博客來購物,可以透過底下連結

如何在博客來購物贊助網站或是點選計數器下方的博客來圖示來讓網站可以永續經營。

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前加入強制轉型成字串就會正常。



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

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

  
3.修改過的結果都正常

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

沒有留言:

贊助

彰化一整天粉絲團