PHP金额计算高精度函数
生活随笔
收集整理的這篇文章主要介紹了
PHP金额计算高精度函数
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
精度函數(shù)?
結(jié)果是2222? ?不是0.8? ?因?yàn)榇嬖诰葐?wèn)題,判定不相等,所以輸出2222
PHP浮點(diǎn)數(shù)計(jì)算精度不夠,以下是幾個(gè)精度計(jì)算函數(shù) bcadd — 加法 bccomp — 比較 bcdiv — 相除 bcmod — 求余數(shù) bcmul — 乘法 bcpow — 次方 bcpowmod — 先次方然后求余數(shù) bcscale — 給所有函數(shù)設(shè)置小數(shù)位精度 bcsqrt — 求平方根 bcsub — 減法計(jì)算類(lèi)
<?php/*** PHP精確計(jì)算 主要用于貨幣的計(jì)算用* @param $n1 第一個(gè)數(shù)* @param $symbol 計(jì)算符號(hào) + - * / %* @param $n2 第二個(gè)數(shù)* @param string $scale 精度 默認(rèn)為小數(shù)點(diǎn)后兩位* @return string*/ class Price{public static function pricecalc($n1, $symbol, $n2, $scale = '2'){$res = "";switch ($symbol) {case "+"://加法$res = bcadd($n1, $n2, $scale);break;case "-"://減法$res = bcsub($n1, $n2, $scale);break;case "*"://乘法$res = bcmul($n1, $n2, $scale);break;case "/"://除法$res = bcdiv($n1, $n2, $scale);break;case "%"://求余、取模$res = bcmod($n1, $n2, $scale);break;default:$res = "";break;}return $res;}/*** 價(jià)格由元轉(zhuǎn)分(用于微信支付單位轉(zhuǎn)換)* @param $price 金額* @return int*/public static function priceyuantofen($price){$price = intval(self::pricecalc(100, "*",$price));return $price;}/*** 價(jià)格由分轉(zhuǎn)元* @param $price 金額* @return float*/public static function pricefentoyuan($price){$price = self::pricecalc(self::priceformat($price),"/",100);return $price;}/*** 價(jià)格格式化** @param int $price* @return string $price_format*/public static function priceformat($price){$price_format = number_format($price, 2, '.', '');return $price_format;} }?
總結(jié)
以上是生活随笔為你收集整理的PHP金额计算高精度函数的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Redis给PHP安装redis扩展
- 下一篇: PHP的var_dump(‘1‘==‘1