我們在進行php
開發的時候經常會遇到浮點型的問題,特別是涉及金額的部分,常常需要進行加減運算。當小數點的位數比較多的時候,往往容易犯一些很低階的錯誤。這裡記錄一下php
的精度計算和封裝的小demo
。
1、概念解釋
php高精度計算問題
2、高精度數值對比大小問題
臨時發乙個專案遇到的php浮點計算問題
//$m和$n代表傳入的兩個數值,主要就是這兩個數值之間的比較
//$x代表傳入的方法,比如是;add,sub等
//$scale 代表傳入的小數點位數。這個根據需求更改即可
public
function
calc
($m,$n,$x,$scale)else
break;
case
'pow':
$t=bcpow($m,$n);
break;
case
'mod':
if($n!=0)else
break;
case
'sqrt':
if($m>=0)else
break;
}return
$t; }
呼叫方式:
$result
=$this
->calc(2.001,3.002,'sub',3);
end php精度計算
預設保留兩位小數 bcadd 引數1,引數2,引數3 引數1 和2 是要相加的引數 3是保留幾位小數。bcadd任意精度數的相加 bcsub任意精度數的減法 bcmul乘法,bcdiv除法 bcmod取餘數。比 功能更強大 bcpow冪函式運算 bcsqrt平方根 sqrt平方根運算 pow求冪 a...
php計算 處理丟失精度問題 保留小數
解決方法 使用php的內庫libbcmath 自 php 4.0.4,libbcmath 隨同 php 一起發布。該擴充套件不需要任何外部的庫 a bcdiv 100,100,2 除法 那麼 a 1.00 bcadd 2個任意精度數字的加法計算 bccomp 比較兩個任意精度的數字 bcdiv 2個...
php浮點精度問題
在php中,浮點數的字長和平台相關,通常最大值是 1.8e308 並具有 14 位十進位制數字的精度 64 位 ieee 格式 浮點數的精度有限。儘管取決於系統,php 通常使用 ieee 754 雙精度格式,則由於取整而導致的最大相對誤差為 1.11e 16。非基本數 算可能會給出更大誤差,並且要...