复制代码代码如下:
$num=1220.01;
echofmoney($num);//结果:1,220.21
echoumoney($num);
//结果:ONETHOUSANDANDTWOHUNDREDTWENTYDOLLARSANDTWENTY-ONECENTSONLY
echoumoney($num,"rmb");
//结果:ONETHOUSANDANDTWOHUNDREDTWENTYYUANANDTWENTY-ONEFENONLY
//define
//格式化货币
functionfmoney($num){
$num=0+$num;
$num=sprintf("%.02f",$num);
if(strlen($num)<=6)return$num;
//从最后开始算起,每3个数它加一个","
for($i=strlen($num)-1,$k=1,$j=100;$i>=0;$i--,$k++){
$one_num=substr($num,$i,1);
if($one_num=="."){
$numArray[$j--]=$one_num;
$k=0;
continue;
}
if($k%3==0and$i!=0){
//如果正好只剩下3个数字,则不加','
$numArray[$j--]=$one_num;
$numArray[$j--]=",";
$k=0;
}else{
$numArray[$j--]=$one_num;
}
}
ksort($numArray);
returnjoin("",$numArray);
}
functionumoney($num,$type="usd"){
global$numTable,$commaTable,$moneyType;
//global$numTable;
$numTable[0]="ZERO";
$numTable[1]="ONE";
$numTable[2]="TWO";
$numTable[3]="THREE";
$numTable[4]="FOUR";
$numTable[5]="FIVE";
$numTable[6]="SIX";
$numTable[7]="SEVEN";
$numTable[8]="EIGHT";
$numTable[9]="NINE";
$numTable[10]="TEN";
$numTable[11]="ELEVEN";
$numTable[12]="TWELVE";
$numTable[13]="THIRTEEN";
$numTable[14]="FOURTEEN";
$numTable[15]="FIFTEEN";
$numTable[16]="SIXTEEN";
$numTable[17]="SEVENTEEN";
$numTable[18]="EIGHTEEN";
$numTable[19]="NINETEEN";
$numTable[20]="TWENTY";
$numTable[30]="THIRTY";
$numTable[40]="FORTY";
$numTable[50]="FIFTY";
$numTable[60]="SIXTY";
$numTable[70]="SEVENTY";
$numTable[80]="EIGHTY";
$numTable[90]="NINETY";
$commaTable[0]="HUNDRED";
$commaTable[1]="THOUSAND";
$commaTable[2]="MILLION";
$commaTable[3]="MILLIARD";
$commaTable[4]="BILLION";
$commaTable[5]="?????";
//单位
$moneyType["usd"]="DOLLARS";
$moneyType["usd_1"]="CENTSONLY";
$moneyType["rmb"]="YUAN";
$moneyType["rmb_1"]="FENONLY";
if($type=="")$type="usd";
$fnum=fmoney($num);
$numArray=explode(",",$fnum);
$resultArray=array();
$k=0;
$cc=count($numArray);
for($i=0;$i
$num_str=$numArray[$i];
//echo"
";
//小数位的处理400.21
if(eregi(".",$num_str)){
$dotArray=explode(".",$num_str);
if($dotArray[1]!=0){
$resultArray[$k++]=format3num($dotArray[0]+0);
$resultArray[$k++]=$moneyType[strtolower($type)];
$resultArray[$k++]="AND";
$resultArray[$k++]=format3num($dotArray[1]+0);
$resultArray[$k++]=$moneyType[strtolower($type)."_1"];
}else{
$resultArray[$k++]=format3num($dotArray[0]+0);
$resultArray[$k++]=$moneyType[strtolower($type)];
}
}else{
//非小数位的处理
if(($num_str+0)!=0){
$resultArray[$k++]=format3num($num_str+0);
$resultArray[$k++]=$commaTable[--$cc];
//判断:除小数外其余若不为零则加and
for($j=$i;$j<=$cc;$j++){
//echo"
";
//echo$numArray[$j];
if($numArray[$j]!=0){
$resultArray[$k++]="AND";
break;
}
}
}
}
}
returnjoin("",$resultArray);
}
functionformat3num($num){
global$numTable,$commaTable;
$numlen=strlen($num);
for($i=0,$j=0;$i
$bitenum[$j++]=substr($num,$i,1);
}
if($num==0)return"";
if($numlen==1)return$numTable[$num];
if($numlen==2){
if($num<=20)return$numTable[$num];
//第一位不可能零
if($bitenum[1]==0){
return$numTable[$num];
}else{
returntrim($numTable[$bitenum[0]*10])."-".$numTable[$bitenum[1]];
}
}
//第一个不可能为零
if($numlen==3){
if($bitenum[1]==0&&$bitenum[2]==0){
//100
return$numTable[$bitenum[0]].$commaTable[0];
}elseif($bitenum[1]==0){
//102
return$numTable[$bitenum[0]].$commaTable[0].$numTable[$bitenum[2]];
}elseif($bitenum[2]==0){
//120
return$numTable[$bitenum[0]].$commaTable[0].$numTable[$bitenum[1]*10];
}else{
//123
return$numTable[$bitenum[0
]].$commaTable[0].trim($numTable[$bitenum[1]*10])."-".$numTable[$bitenum[2]];
}
}
return$num;
}
?>
您可能感兴趣的文章:PHP实现十进制数字与二十六进制字母串相互转换操作示例php使用json_decode后数字对象转换成了科学计数法的解决方法php把数字转换成汉字的代码php实现阿拉伯数字和罗马数字相互转换的方法php短网址和数字之间相互转换的方法PHP实现将科学计数法转换为原始数字字符串的方法php中base_convert()进制数字转换函数实例PHP中IP地址与整型数字互相转换详解php导出csv格式数据并将数字转换成文本的思路以及代码分享PHP数字金额转换成中文大写显示