您的位置:首页 > 其它

高精度价格计算、格式化

2016-03-15 09:29 387 查看
bc_math扩展
$money = 0.01;
$price = price_format(99.9999);
echo bcmul($price, 0.01, 2); // 积
echo $price = price_format((99.9999));
echo bcmul($left=3.1415926, $right=2.4569874566, 2); // 积
echo bcmul(99.99, 0.01, 2); // 积
echo bcdiv($left=99.99, $right=5, 2); // 商
echo bcadd($left=3.1415926, $right=2.4569874566, 2); // 和
echo bcsub($left=1.0321456, $right=3.0123456, 2); // 差
echo $price + 1;
echo bccomp(100,99.99,2);  // 1 >
echo bccomp(99.99,100,2); // -1 <
echo bccomp(99.99,99.99,2); // 0 ==


/**
* 价格格式化输出
* @param unknown_type $number
* @param unknown_type $decimals
* @param unknown_type $dec_point
* @param unknown_type $thousands_sep
* @return string
*/
function price_format($number,$decimals=2,$dec_point='.',$thousands_sep=','){
$str =  bcmul($number, 1.00,2);
$str = $str.'';
if(strpos($str, '.')!==false){
$strSplit = explode('.', $str);
$subject = $strSplit[0];
$decimalsTemp  = $strSplit[1];
$decimalsTemp = str_pad($decimalsTemp, 2,'0',STR_PAD_RIGHT);
}
else{
$subject = $str;
$decimalsTemp  = '00';
}
$leaveCount = strlen($subject)%3;
if($leaveCount==0){
$subject = preg_replace('/[0-9]{3}/', "$0,", $subject);
return rtrim($subject,',').'.'.substr($decimalsTemp, 0,2);
}
else{
$prestr = substr($subject, 0,$leaveCount);
$subject = preg_replace('/[0-9]{3}/', "$0,", substr($subject,$leaveCount));
$subject = rtrim($subject,',');
if(!empty($subject)){
return $prestr.','.$subject.'.'.substr($decimalsTemp, 0,2);
}
else{
return $prestr.'.'.substr($decimalsTemp, 0,2);
}
}
return $str;
// 	return number_format($number,$decimals,$dec_point,$thousands_sep);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: