$num=1220.01;
echo fmoney($num);//結果: 1,220.21
echo umoney($num);結果: 1,220 ドルと 21 セントのみ
echo umoney($num,"rmb")
//結果: 1,220 元と 21 フェンのみ
//define
// 通貨のフォーマット
function fmoney($num) {
$num=0+$num;
if(strlen($num) <= 6) ) return $num;
//末尾から数えて 3 桁ごとに「,」を 1 つ追加します
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==0 and $i!=0) {
// 数字が 3 つだけ残っている場合は、「,」を追加しないでください
$numArray[$j--] = $one_num;
$numArray[$j--] = ","
} else {
$numArray[$j--]=$one_num;
}
ksort($numArray);
return join("",$numArray)
}
function umoney($num,$type="usd") {
global $numTable,$commaTable , $moneyType;
$numTable[0]="ゼロ ";
$numTable[2]="TWO "; ="スリー ";
$numTable[5]="ファイブ ";
$numTable[7]="セブン "; $numTable[8]="エイト ";
$numTable[10]="テン "; "TWELVE ";
$numTable[13]="THIRTEEN ";
$numTable[15]="FIFTEEN "; numTable[17]="セブンティーン";
$numTable[19]="ナインティーン";
$numTable[30]= "サーティ ";
$numTable[40]="フォーティ ";
$numTable[50]="フィフティ ";
$numTable[60]="シックスティ ";
$numTable[70]="セブンティ ";
$ numTable [80]="80";
$numTable[90]="90";
$commaTable[1]="1000"; MILLION ";
$commaTable[3]="MILLIARD ";
$commaTable[4]="BILLION ";
$commaTable[5]="????? ";
//単位
$moneyType[ " usd"]="ドル ";
$moneyType["usd_1"]="セントのみ";
$moneyType["rmb"]="人民元";
$moneyType["rmb_1"]="フェンのみ";
if($type=="") $type="usd";
$fnum = fmoney($num);
$numArray =explode(",",$fnum);
$k=0;
$cc=count($numArray);
for($i = 0; $i
$num_str = $numArray
//echo "
";
//10 進数処理 400.21
if(eregi(".",$num_str) {
$dotArray =explode(".",$num_str); [1] != 0) {
$resultArray[$k++]=format3num($dotArray[0]+0);
$resultArray[$k++]=$moneyType[strto lower($type)]; k++]="AND ";
$resultArray[$k++]=format3num($dotArray[$k++]=$moneyType[strto lower($type)."_1"]; else {
$resultArray[$k++]=format3num($dotArray[0]+0);
$resultArray[$k++]=$moneyType[strto lower($type)]; else {
// の処理10 進数以外の数字
if(($num_str+0)!=0) {
$resultArray[$k++]=format3num($num_str+0);
$resultArray[$k++]=$commaTable[--$cc ] ;
//判定:小数点以外がゼロでない場合は加算して
for($j=$i; $j <= $cc; $j++) {
//echo "
"; /echo $numArray[$j];
if($numArray[$j] !=0) {
$resultArray[$k++]="AND ";
}
}
}
return join("",$resultArray);
関数 format3num($num) {
$numlen = strlen($num); = 0;$i <$i++) {
$bitenum[$j++] = substr($num==0)
if ($numlen == 1) return $numTable[$num];
if($numlen == 2) {
if($num <= 20) return $numTable[$num];
//最初のビットはできませんゼロにする
if($bitenum[1]==0) {
return $numTable[$num];
} else {
return trim($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]. numTable[$bitenum[1]*10])."-".$numTable[$bitenum[2]]
}
?>
http://www.bkjia.com/PHPjc/321844.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/321844.html技術記事次のようにコードをコピーします: ?php $num=1220.01; echo fmoney($num);//結果: 1,220.21 echo umoney($num); //結果: 1,220 ドルと 21 セント O. .