PHP 小數精度運算

echo intval(0.58*100);//結果爲57

echo intval((0.1 + 0.7) * 10);//結果爲7

產生這樣的原因是計算機內部對部分浮點數不能準確地用二進制表示,就像我們不能用十進制準確表示10/3一樣.

 

所以對於浮點數來計算金額這些敏感的數據,推薦使用PHP的BC函數

 

BCMath 任意精度數學
bcadd — 2個任意精度數字的加法計算
bccomp — 比較兩個任意精度的數字
bcdiv — 2個任意精度的數字除法計算
bcmod — 對一個任意精度數字取模
bcmul — 2個任意精度數字乘法計算
bcpow — 任意精度數字的乘方
bcpowmod — Raise an arbitrary precision number to another, reduced by a specified modulus
bcscale — 設置所有bc數學函數的默認小數點保留位數
bcsqrt — 任意精度數字的二次方根
bcsub — 2個任意精度數字的減法

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章