人民币大写转化之各种语言

来源:互联网 发布:淘宝开店铺怎么找货源 编辑:程序博客网 时间:2024/05/21 10:30

偷笑网上荡来的  不要鄙视砸门啊

Php代码 //人民币金额转大写程序 PHP版   //CopyRight Bardo QI     function numToCny($num){       $capUnit=array('万','亿','万','圆','');       $capDigit=array(2=>array('角','分',''), 4=>array('仟','佰','拾',''));       $capNum=array('零','壹','贰','叁','肆','伍','陆','柒','捌','玖');       if ((strpos(strval($num),'.')>16)||(!is_numeric($num)))           return '';       $num = sprintf("%019.2f",$num);       $CurChr=array('','');       for ($i=0,$ret='',$j=0;$i<5;$i++,$j=$i*4+floor($i/4)){           $nodeNum=substr($num,$j,4);           for($k=0,$subret='',$len=strlen($nodeNum);(($k<$len)&&(intval(substr($nodeNum,$k))!=0));$k++){               $CurChr[$k%2] = $capNum[$nodeNum{$k}].(($nodeNum{$k}==0)?'':$capDigit[$len][$k]);               if (!(($CurChr[0]==$CurChr[1]) && ($CurChr[$k%2]==$capNum[0])))                   if(!(($CurChr[$k%2] == $capNum[0]) && ($subret=='') && ($ret=='')))                       $subret .= $CurChr[$k%2];           }           $subChr = $subret.(($subret=='')?'':$capUnit[$i]);           if(!(($subChr == $capNum[0]) && ($ret=='')))               $ret .= $subChr;       }       $ret=($ret=="")?$capNum[0].$capUnit[3]:$ret;           return $ret;   }  
奋斗
//人民币金额转大写程序 JavaScript版     //CopyRight Bardo QI         function numToCny(num){         var capUnit = ['万','亿','万','圆',''];         var capDigit = { 2:['角','分',''], 4:['仟','佰','拾','']};         var capNum=['零','壹','贰','叁','肆','伍','陆','柒','捌','玖'];         if (((num.toString()).indexOf('.') > 16)||(isNaN(num)))              return '';         num = ((Math.round(num*100)).toString()).split('.');   num = (num[0]).substring(0, (num[0]).length-2)+'.'+ (num[0]).substring((num[0]).length-2,(num[0]).length);      num =((Math.pow(10,19-num.length)).toString()).substring(1)+num;         var i,ret,j,nodeNum,k,subret,len,subChr,CurChr=[];         for (i=0,ret='';i<5;i++,j=i*4+Math.floor(i/4)){             nodeNum=num.substring(j,j+4);             for(k=0,subret='',len=nodeNum.length;((k<len) && (parseInt(nodeNum.substring(k),10)!=0));k++){                 CurChr[k%2] = capNum[nodeNum.charAt(k)]+((nodeNum.charAt(k)==0)?'':capDigit[len][k]);                 if (!((CurChr[0]==CurChr[1]) && (CurChr[0]==capNum[0])))                     if(!((CurChr[k%2] == capNum[0]) && (subret=='') && (ret=='')))                         subret += CurChr[k%2];             }             subChr = subret + ((subret=='')?'':capUnit[i]);             if(!((subChr == capNum[0]) && (ret=='')))                 ret += subChr;         }         ret=(ret=='')? capNum[0]+capUnit[3]: ret;           return ret;     } 
哭
'人民币金额转大写程序 Asp、 Vb6版   'CopyRight Bardo QI     Function numToCny(num)       capUnit = Array("万", "亿", "万", "圆", "")       capDigit = Array(Array(), Array(), Array("角", "分", ""), Array(), Array("仟", "佰", "拾", ""))       capNum = Array("零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖")       If (((InStr(1, num, ".") > 16) Or (Not IsNumeric(num)))) Then           numToCny = ""          Exit Function       End If       num = FormatNumber(num, 2, , , 0)       num = Mid(CStr(10 ^ (19 - Len(num))), 2) + num       CurChr = Array("", "")       ret = ""      For i = 0 To 4          j = i * 4 + Int(i / 4) + 1          nodeNum = Mid(num, j, 4)           slen = Len(nodeNum)           subret = ""          For k = 1 To slen               If Int(Mid(nodeNum, k)) = 0 Then                   Exit For               End If               CurChr(k Mod 2) = capNum(Int(Mid(nodeNum, k, 1))) + IIf(Int(Mid(nodeNum, k, 1)) = 0, "", capDigit(slen)(k - 1))               If (Not ((CurChr(0) = CurChr(1)) And (CurChr(0) = capNum(0)))) Then                   If (Not ((CurChr(k Mod 2) = capNum(0)) And (subret = "") And (ret = ""))) Then                       subret = subret + CurChr(k Mod 2)                   End If               End If           Next           subChr = subret + IIf((subret = ""), "", capUnit(i))           If (Not ((subChr = capNum(0)) And (ret = ""))) Then               ret = ret + subChr           End If       Next       ret=Iif((ret=""), capNum(0)+capUnit(3), ret)        numToCny = ret   End Function  
生气
//人民币金额转大写程序 jsp, Java版//CopyRight Bardo QI//警告,因为未装JAVA编译器,所以,这一代码未经测试!import java.util.ArrayList;import java.util.Math.*;import java.lang.*;String numToCny(String num){    String capUnit[] ={"万","亿","万","圆",""};    String capDigit[][] = { {""},{""},{"角","分",""},{""},{"仟","佰","拾",""}};    String capNum[]={"零","壹","贰","叁","肆","伍","陆","柒","捌","玖"};    if (num.indexOf(".") > 16)        return "ERROR";    double dnum=Double.parseDouble(num);    dnum = Math.round(dnum*100)/100;    if (Double.isNaN(dnum))        return "ERROR";    String snum = Double.toString(dnum);    double pnum = Math.pow(10,19-snum.length());    String psnum = Double.toString(pnum);    snum = psnum.substring(1)+snum;    String ret,nodeNum,subret,subChr;    ArrayList CurChr = new ArrayList(2);    int i,j,k,len;    for (i=0,ret="";i<5;i++,j=i*4+(int)Math.floor(i/4)){        nodeNum=snum.substring(j,j+4);        for(k=0,subret="",len=nodeNum.length();((k<len) && (Integer.parseInt(nodeNum.substring(k))!=0));k++){            CurChr.set(k%2,capNum[Integer.parseInt(nodeNum.substring(k,k+1))]+((nodeNum.substring(k,k+1).equals("0"))?"":capDigit[len][k]));            if (!((CurChr.get(0)==CurChr.get(1)) && (CurChr.get(0)==capNum[0])))                if(!((CurChr.get(k%2) == capNum[0]) && (subret.equals(""))  && (ret.equals(""))))                    subret += CurChr.get(k%2);        }        subChr = subret + ((subret.equals(""))?"":capUnit[i]);        if(!((subChr == capNum[0]) && (ret.equals(""))))            ret += subChr;    }    ret=(ret.equals(""))? capNum[0]+capUnit[3]: ret;    return ret;}
尴尬
//人民币金额转大写程序VC++版   //CopyRight Bardo QI     CString numtoCny(double Num)   {       char* capUnit[]={"万","亿","万","圆",""};       char* capDigit[5][4]={{""},{""},{"角","分",""},{""},{"仟","佰","拾",""}};       char* capNum[]={"零","壹","贰","叁","肆","伍","陆","柒","捌","玖"};       CString num,ret="",nodeNum="",subret,subChr,thisChr,lastChr,ch;       num.Format("%019.2f",Num);       if(num.Find(".")>16)           return ret;       int i,j,k,len,chn;       for (i=0;i<5;i++,j=i*4+int(i/4)){           nodeNum= num.Mid(j,4);           subret="";           lastChr="";           for(k=0,len=nodeNum.GetLength();((k<len)&&(atoi((LPCTSTR)nodeNum.Mid(k,4-k))!=0));k++){               ch= nodeNum[k];               chn=atoi((LPCTSTR)ch);               thisChr = capNum[chn] ;               thisChr += (chn==0) ? "" : capDigit[len][k];               if (!((thisChr==lastChr) && (thisChr==capNum[0])))                   if(!((thisChr == capNum[0]) && (subret=="") && (ret=="")))                       subret += thisChr;               lastChr=thisChr;           }           subChr = subret;           subChr += (subret=="")?"":capUnit[i];           if(!((subChr == capNum[0]) && (ret=="")))               ret += subChr;       }       (ret=="")?ret.Format("%s%s",capNum[0],capUnit[3]):ret;        return ret;   }  
大哭
#人民币金额转大写程序Python版本      #Copyright: zinges at foxmail.com       #blog: http://zingers.iteye.com     #感谢zinges提供了Python的版本     import math   def numtoCny(num):       capUnit = ['万','亿','万','圆','']       capDigit = { 2:['角','分',''], 4:['仟','佰','拾','']}       capNum=['零','壹','贰','叁','肆','伍','陆','柒','捌','玖']       snum = str('%019.02f') % num       if snum.index('.')>16:           return ''      ret,nodeNum,subret,subChr='','','',''      CurChr=['','']       for i in range(5):           j=int(i*4+math.floor(i/4))           subret=''          nodeNum=snum[j:j+4]           lens=len(nodeNum)           for k in range(lens):               if int(nodeNum[k:])==0:                   continue              CurChr[k%2] = capNum[int(nodeNum[k:k+1])]               if nodeNum[k:k+1] != '0':                   CurChr[k%2] += capDigit[lens][k]               if  not ((CurChr[0]==CurChr[1]) and (CurChr[0]==capNum[0])):                   if not((CurChr[k%2] == capNum[0]) and (subret=='') and (ret=='')):                       subret += CurChr[k%2]           subChr = [subret,subret+capUnit[i]][subret!='']           if not ((subChr == capNum[0]) and (ret=='')):               ret += subChr       return [ret,capNum[0]+capUnit[3]][ret=='']  
安静
//人民币金额转大写程序 ActionScript 3.0版   //CopyRight Bardo QI     public function numToCny(num:String):String{       var capUnit:Array =['万','亿','万','圆',''];       var capDigit:Array = [[],[], ['角','分',''],[], ['仟','佰','拾','']];       var capNum:Array=['零','壹','贰','叁','肆','伍','陆','柒','捌','玖'];       if ((num.indexOf('.') > 16)||(isNaN(parseFloat(num))))            return '';       var dnum:Number = Math.round(parseFloat(num)*100)/100;        num = dnum.toString();       var inum:Number = Math.pow(10,19-num.length);        var pnum:String = inum.toString();       num = pnum.substring(1)+num;       var i:Number,ret:String,j:Number,nodeNum:String,k:Number,subret:String,len:Number,subChr:String,CurChr:Array=['',''];       for (i=0,ret='';i<5;i++,j=i*4+Math.floor(i/4)){           nodeNum=num.substring(j,j+4);           for(k=0,subret='',len=nodeNum.length;((k<len) && (parseInt(nodeNum.substring(k))!=0));k++){               CurChr[k%2] = capNum[parseInt(nodeNum.charAt(k))]+((nodeNum.charAt(k)=='0')?'':capDigit[len][k]);               if (!((CurChr[0]==CurChr[1]) && (CurChr[0]==capNum[0])))                   if(!((CurChr[k%2] == capNum[0]) && (subret=='') && (ret=='')))                       subret += CurChr[k%2];           }           subChr = subret + ((subret=='')?'':capUnit[i]);           if(!((subChr == capNum[0]) && (ret=='')))               ret += subChr;       }       ret=(ret=='')? capNum[0]+capUnit[3]: ret;         return ret;   }  
疑问
'人民币金额转大写程序 VB.Net版       'CopyRight Bardo QI         Function numToCny(ByVal num)           Dim capUnit() As String = {"万", "亿", "万", "圆", ""}           Dim capDigit(,) As String = {{"", "", "", ""}, {"", "", "", ""}, {"角", "分", "", ""}, {"", "", "", ""}, {"仟", "佰", "拾", ""}}           Dim capNum() As String = {"零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖"}           If (((InStr(1, num, ".") > 16) Or (Not IsNumeric(num)))) Then               numToCny = ""              Exit Function           End If           num = FormatNumber(num, 2, , , 0)           num = Mid(CStr(10 ^ (19 - Len(num))), 2) + num           Dim CurChr() = {"", ""}, nodeNum As String, subret As String, subChr As String, slen As Integer, i As Integer, j As Integer, k As Integer           Dim ret As String = ""          For i = 0 To 4              j = i * 4 + Int(i / 4) + 1              nodeNum = Mid(num, j, 4)               slen = Len(nodeNum)               subret = ""              For k = 1 To slen                   If Int(Mid(nodeNum, k)) = 0 Then                       Exit For                   End If                   CurChr(k Mod 2) = capNum(Int(Mid(nodeNum, k, 1))) + IIf(Int(Mid(nodeNum, k, 1)) = 0, "", capDigit(slen, k - 1))                   If (Not ((CurChr(0) = CurChr(1)) And (CurChr(0) = capNum(0)))) Then                       If (Not ((CurChr(k Mod 2) = capNum(0)) And (subret = "") And (ret = ""))) Then                           subret = subret + CurChr(k Mod 2)                       End If                   End If               Next               subChr = subret + IIf((subret = ""), "", capUnit(i))               If (Not ((subChr = capNum(0)) And (ret = ""))) Then                   ret = ret + subChr               End If           Next           numToCny = IIf((ret = ""), capNum(0) + capUnit(3), ret)       End Function  
睡觉
        //人民币金额转大写程序C#版        //CopyRight Bardo QI        string numtoCny(decimal Num){        string[] capUnit = {"万","亿","万","圆",""};            string[,] capDigit = { { "", "", "", "" }, { "", "", "", "" }, { "角", "分", "", "" }, { "", "", "", "" }, { "仟", "佰", "拾", "" } };           string[] capNum = {"零","壹","贰","叁","肆","伍","陆","柒","捌","玖"};            string num, ret = "", nodeNum = "", subret, subChr;            string[] thisChr={"",""};            num = String.Format("{0:0000000000000000.00}",Num);            if(num.IndexOf(".")>16)            return ret;            int i,j,k,len,ch;            for (i=0,j=0;i<5;i++,j=i*4 + int.Parse(Math.Floor((double)i/4).ToString()) ){                len = (j < 17) ? 4 : 2;                nodeNum = num.Substring(j, len);            subret="";                for (k = 0; ((k < len) && (int.Parse(nodeNum.Substring(k, len - k)) != 0)); k++){                    ch = int.Parse(nodeNum.Substring(k, 1));                    thisChr[i%2] = capNum[ch];                    thisChr[i % 2] += (ch == 0) ? "" : capDigit[len,k];                    if (!((thisChr[0] == thisChr[1]) && (thisChr[i % 2] == capNum[0])))                        if (!((thisChr[i % 2] == capNum[0]) && (subret == "") && (ret == "")))                            subret += thisChr[i % 2];                }                subChr = subret;            subChr += (subret=="")?"":capUnit[i];            if(!((subChr == capNum[0]) && (ret=="")))                ret += subChr;            }            ret=(ret=="")? capNum[0]+capUnit[3]:ret;            return ret;        }    }
得意
非常给力,果断收藏了。嘎嘎

0 0