高精度价格计算、格式化

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);
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值