数字转人民币大写

这个也是在网上收集到的,只是稍稍修改了一下。

/**************************************************************************
函数说明:	数字转人民币大写----->完成
使用方法:	函数名(字符串)
**************************************************************************/
function num_to_rmb($num){
	$c1="零壹贰叁肆伍陆柒捌玖";
	$c2="分角元拾佰仟万拾佰仟亿";
	//精确到分后面就不要了,所以只留两个小数位
	$num=round($num,2);
	//将数字转化为整数
	$num=number_format($num*100,0,"","");
	//如果金额大于12位数
	if(strlen($num)>12){ return"金额太大,请检查"; }
	$i=0;
	$c="";
	while(1){
		//取最后一位数字
		$n=($i==0?substr($num,strlen($num)-1,1):fmod($num,10));	#fmod() 函数返回除法的浮点数余数。
		//每次将最后一位数字转化为中文
		$p1=substr($c1,3*$n,3);
		$p2=substr($c2,3*$i,3);
		$c=($n!='0'||($n=='0'&&($p2=='亿'||$p2=='万'||$p2=='元'))?$p1.$p2.$c:$p1.$c);
		$i=$i+1;
		//去掉数字最后一位了
		$num=floor($num/10);
		$num=number_format($num,0,"","");
		//结束循环
		if($num == 0){            
			break;        
		}     
	}
	$j=0;
	$slen=strlen($c);
	while($j<$slen){
		//utf8一个汉字相当3个字符        
		$m=substr($c,$j,6);
		//处理数字中很多0的情况,每次循环去掉一个汉字“零”
			if($m=='零元'||$m=='零万'||$m =='零亿'||$m=='零零'){            
				$left=substr($c,0,$j);            
				$right=substr($c,$j+3);            
				$c=$left.$right;            
				$j=$j-3;            
				$slen=$slen-3;        
			}         
		$j=$j+3;    
	}     
	//这个是为了去掉类似23.0中最后一个“零”字    
	if (substr($c,strlen($c)-3,3)=='零') {       
		$c=substr($c,0,strlen($c)-3);
	}
	//将处理的汉字加上“整”
	if(empty($c)){
		return "零元整";
	}
	else{
		return (substr($c,-3,3)=="分")?($c):($c."整");
	}
}
阅读剩余
THE END