<?php
header("Content-type:text/html;charset=utf-8");
/**
数字转换为中文
@param string|integer|float $num 目标数字
@param integer $mode 模式[true:金额(默认),false:普通数字表示]
@param boolean $sim 使用小写(默认)
@return string
*/
function number2chinese($num,$mode= true,$sim= true){
if(!is_numeric($num)) return'含有非数字非小数点字符!';
$char = $sim? array('零','一','二','三','四','五','六','七','八','九')
: array('零','壹','贰','叁','肆','伍','陆','柒','捌','玖');
$unit = $sim? array('','十','百','千','','万','亿','兆')
: array('','拾','佰','仟','','萬','億','兆');
$retval = $mode? '元':'点';
//小数部分
if(strpos($num, '.')){
list($num,$dec) = explode('.', $num);
$dec= strval(round($dec,2));
if($mode){
$retval.= "{$char[$dec['0']]}角{$char[$dec['1']]}分";
}else{
for($i= 0,$c= strlen($dec);$i< $c;$i++) {
$retval.= $char[$dec[$i]];
}
}
}
//整数部分
$str= $mode? strrev(intval($num)) : strrev($num);
for($i= 0,$c= strlen($str);$i< $c;$i++) {
$out[$i] = $char[$str[$i]];
if($mode){
$out[$i] .= $str[$i] != '0'? $unit[$i%4] : '';
if($i>1 and$str[$i]+$str[$i-1] == 0){
$out[$i] = '';
}
if($i%4 == 0){
$out[$i] .= $unit[4+floor($i/4)];
}
}
}
$retval= join('',array_reverse($out)) . $retval;
return$retval;
}
//实例调用=====================================================
$num= '0123648867.789';
echo$num,'<br>';
//普通数字的汉字表示
echo'普通:',number2chinese($num,false),'';
echo'<br>';
//金额汉字表示
echo'金额(简体):',number2chinese($num,true),'';
echo'<br>';
echo'金额(繁体):',number2chinese($num,true,false);
action
本站未注明转载的文章均为原创,并采用
CC BY-NC-SA 4.0授权协议,
转载请注明来源,谢谢!如本站内容对你有所帮助的话,欢迎订阅关注
邢栋博客,唠嗑(分享)每日的折腾经历。
已有 0 条评论