码迷,mamicode.com
首页 > 其他好文 > 详细

将金额转换成大写表示

时间:2017-04-09 23:35:31      阅读:209      评论:0      收藏:0      [点我收藏+]

标签:return   reverse   div   list   code   语义   数字转换   value   exp   

function cny($ns)
{
    static $cnums=array("零","壹","贰","叁","肆","伍","陆","柒","捌","玖"),
    $grees=array("圆","拾","佰","仟","万","拾","佰","仟","亿","拾","佰","仟");

    //将数字转换成整数部分和小数部分
    @list($ns1,$ns2)=explode(".",$ns,2);

    $list = array_reverse(str_split($ns1));

    foreach ($list as $key => $value) {

        if($value != 0 || $key%4 == 0){

            $list[$key] = $cnums[$value].$grees[$key];
        }else{
            $list[$key] = "零";
        }

    }
    //处理汉字中的语义问题
    $ns1 = str_replace(["零零零零万","零零零","零零"],["零","零","零"],implode(array_reverse($list)));
    $ns1 = str_replace(["零亿","零万","零圆"], ["亿","万","圆"], $ns1);

    //处理小数部分
    if(empty($ns2)) return $ns1."整";

    if($ns2[0]) $ns1 .= $cnums[$ns2[0]]."角";
        else $ns1 .= "零";
    if(isset($ns2[1])) $ns1 .= $cnums[$ns2[1]]."分";
        else $ns1 .= "整";

    return $ns1;
}

$num = 214562541205.49;
dump(cny($num));

//dump

string(81) "贰仟壹佰肆拾伍亿陆仟贰佰伍拾肆万壹仟贰佰零伍圆肆角玖分"

 

 

 

将金额转换成大写表示

标签:return   reverse   div   list   code   语义   数字转换   value   exp   

原文地址:http://www.cnblogs.com/praglody/p/6686861.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!