将一串数字转为大写人民币形式

数字转人民币大写形式

function toChinese(str){
//大写数字
var arrNum = ['零','壹','贰','叁','肆','伍','陆','柒','捌','玖']
// 基本单位
var Intdanwei1 = ['','拾','佰','仟'];
var Intdanwei2 = ['','万','亿','兆'];
var Floatdanwei = ['角','分','毫','厘']

var zheng = "整";
var yuan = '元';

//最大数字
var maxNum = 9999999999999999.9999
//整数部分
var zhengNum;
//小数部分
var floatNum;
//装整形和小数的数组
var parts;
//输出的字符串
var chinese = '';

//参数为空
if(str == ''){
    return '';
}
//参数不为空时
str = parseFloat(str)
//最大数字
if( str > maxNum){
    return '';
}
//如果传的数字为0
if(str == 0){
    chinese = arrNum[0] + zheng + yuan;
}
//如果传的数字不为0;
str = str.toString();

//判断str是否有小数点
if(str.indexOf('.') == -1){
    zhengNum = str;
    floatNum = '';
}else{
    parts = str.split('.'); //以点分割为数组
    zhengNum = parts[0];    //整数部分
    floatNum = parts[1].substr(0,4); //保留四位小数
}

//整数部分转换  
if(parseInt(zhengNum,10) > 0){
    var count = 0;
    var lens = zhengNum.length;
    for(var i = 0 ; i < lens; i++){
        //每次循环截取一个字符
        var n = zhengNum.substr(i,1);
        //截取的字符在字符串中的位置
        var p = lens - i - 1;
        //根据结果匹配单位
        var q = p/4;
        //根据结果匹配单位
        var m = p%4;
        if(n == '0'){  //添加'零'
            count++;
        }else{
            if(count > 0){
                //添加'零'
                chinese += arrNum[0];
                //恢复count值为0;
                count = 0;
            }
            chinese += arrNum[Number(n)] + Intdanwei1[m]
        }
        //如果m=0,那么当前字串的位置为4的倍数,根据单位的特点,4位一分割,取得当前字串的单位
        if(m == 0){
            chinese += Intdanwei2[q]
        }
    }
    chinese += yuan;
}

//小数部分转换
if(floatNum != ''){
    var floatLen = floatNum.length;
    for(var i = 0 ; i < floatLen; i++){
        var n = floatNum.substr(i,1);
        if(n != '0'){
            chinese += arrNum[parseInt(n)] + Floatdanwei[i]
        }
    }
}else{
    chinese += zheng;
};

if(chinese == ''){
     chinese = arrNum[0] + zheng + yuan;
 }
return chinese;
}
posted @ 2017-07-14 16:54  rainbow8590  阅读(344)  评论(0编辑  收藏  举报