数字转人民币大写
这个也是在网上收集到的,只是稍稍修改了一下。
/**************************************************************************
函数说明: 数字转人民币大写----->完成
使用方法: 函数名(字符串)
**************************************************************************/
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."整");
}
}
阅读剩余
版权声明:
作者:Mr.x
链接:http://www.x1985.org/?p=375
文章版权归作者所有,未经允许请勿转载。
THE END