`
mywebcode
  • 浏览: 1008246 次
文章分类
社区版块
存档分类
最新评论

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

 
阅读更多

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

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;
        }
    }
得意
非常给力,果断收藏了。嘎嘎

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics