zoukankan      html  css  js  c++  java
  • php阿拉伯数字转化为大写

    //人民币金额转大写程序PHP版
    //作者:大V【vsxp】
    $number = $_GET['num'] ? trim($_GET['num']) : 8421;
    echo Num2Cny::ParseNumber($number);
    class Num2Cny{
        static $basical = array(0=>"零","壹","贰","叁","肆","伍","陆","柒","捌","玖");
        static $advanced=array(1=>"拾","佰","仟");
        public static function ParseNumber($number){
            $number=trim($number);
            if ($number>999999999999) return "数字太大,无法处理。抱歉!";
            if ($number==0) return "零";
            if(strpos($number,'.')){
                $number=round($number,2);
                $data=explode(".",$number);
                $data[0]=self::int($data[0]);
                $data[1]=self::dec($data[1]);
                return $data[0].$data[1];
            }else{
                return self::int($number).'整';
            }
        }
    
        public static function int($number){
            $arr=array_reverse(str_split($number));
            $data='';
            $zero=false;
            $zero_num=0;
            foreach ($arr as $k=>$v){
                $_chinese='';
                $zero=($v==0)?true:false;
                $x=$k%4;
                if($x && $zero && $zero_num>1)continue;
                switch ($x){
                    case 0:
                    if($zero){
                        $zero_num=0;
                    }else{
                        $_chinese=self::$basical[$v];
                        $zero_num=1;
                    }
                    if($k==8){
                        $_chinese.='亿';
                    }elseif($k==4){
                        $_chinese.='万';
                    }
                    break;
                    default:
                    if($zero){
                        if($zero_num==1){
                            $_chinese=self::$basical[$v];
                            $zero_num++;
                        }
                    }else{
                        $_chinese=self::$basical[$v];
                        $_chinese.=self::$advanced[$x];
                    }
                }
                $data=$_chinese.$data;
            }
            return $data.'元';
        }
    
        public static function dec($number){
            if(strlen($number)<2) $number.='0';
            $arr=array_reverse(str_split($number));
            $data='';
            $zero_num=false;
            foreach ($arr as $k=>$v){
                $zero=($v==0)?true:false;
                $_chinese='';
                if($k==0){
                    if(!$zero){
                        $_chinese=self::$basical[$v];
                        $_chinese.='分';
                        $zero_num=true;
                    }
                }else{
                    if($zero){
                        if($zero_num){
                            $_chinese=self::$basical[$v];
                        }
                    }else{
                        $_chinese=self::$basical[$v];
                        $_chinese.='角';
                    }
                }
                $data=$_chinese.$data;
            }
            return $data;
        }
    
    }
  • 相关阅读:
    C++笔记(2018/2/6)
    2017级面向对象程序设计寒假作业1
    谁是你的潜在朋友
    A1095 Cars on Campus (30)(30 分)
    A1083 List Grades (25)(25 分)
    A1075 PAT Judge (25)(25 分)
    A1012 The Best Rank (25)(25 分)
    1009 说反话 (20)(20 分)
    A1055 The World's Richest(25 分)
    A1025 PAT Ranking (25)(25 分)
  • 原文地址:https://www.cnblogs.com/seanpan/p/13993394.html
Copyright © 2011-2022 走看看