数字金额转化为汉字大写金额

代码:

function numberToChinese(number) {

    /*本方法:数字金额转化为汉字大写金额;
	 *支持最大整数兆(万亿);
	 *支持小数后四位(毫);
	 */
    var Chinese = ['零', '壹', '贰', '叁', '肆', '伍', '陆', '柒', '捌', '玖'];
    var ChineseInteger = ['', '拾', '佰', '仟', '万', '拾', '佰', '仟', '亿', '拾', '佰', '仟', '兆'];
    var ChineseDecimal = ['角', '分', '厘', '毫'];
    var resultInteger = '',
    resultDecimal = '',
    resultNegative = '';

    number = isNaN(number) ? 0 : number; //校验数字格式
    var numStr = number.toString(); //转化为字符串
    //定义数组 获取整数部分========================
    var arrInteger = numStr.split('.')[0];
    if (!arrInteger || arrInteger == '0') {
        resultInteger += '零元';
    } else {
        if (arrInteger.length > 13) {
            arrInteger = arrInteger.substr( - 13);
        }
        //整数部分 数字转化对应汉字
        var numInteger = arrInteger.split('');
        var IntegerData = new Array();
        for (var i in numInteger) {
            for (var i2 in Chinese) {
                if (numInteger[i] == i2) {
                    IntegerData.push(Chinese[i2]);
                }
                if (numInteger[i] == '-') {
                    resultNegative = '负';
                }
            }
        }
        IntegerData.reverse();
        //整数部分 数组拼接
        for (var i in IntegerData) {
            for (var i2 in ChineseInteger) {
                if (i == i2) {
                    IntegerData[i] = IntegerData[i] + ChineseInteger[i];
                }
            }
        }
        IntegerData.reverse();
        for (var i in IntegerData) {
            resultInteger += IntegerData[i];
        }
        resultInteger += '元';
    }
    //定义数组 获取小数部分=========================
    var arrDecimal = numStr.split('.')[1];
    if (arrDecimal) {
        if (arrDecimal.length > 4) {
            arrDecimal = arrDecimal.substr(0, 4);
        }
        //小数部分 数字转化对应汉字
        var numDecimal = arrDecimal.split('');
        var DecimalData = new Array();
        for (var i in numDecimal) {
            for (var i2 in Chinese) {
                if (numDecimal[i] == i2) {
                    DecimalData.push(Chinese[i2]);
                }
            }
        }
        //小数部分 数组拼接
        for (var i in DecimalData) {
            for (var i2 in ChineseDecimal) {
                if (i == i2) {
                    DecimalData[i] = DecimalData[i] + ChineseDecimal[i];
                }
            }
        }
        for (var i in DecimalData) {
            resultDecimal += DecimalData[i];
        }
    }
    //整数部分+小数部分 拼接返回
    return resultNegative + resultInteger + resultDecimal;
}


示例:
var data = 12345;
console.log(numberToChinese(data));
//结果:壹万贰仟叁佰肆拾伍元
var data = 12345.12345;
console.log(numberToChinese(data));
//结果:壹万贰仟叁佰肆拾伍元壹角贰分叁厘肆毫
var data = 0;
console.log(numberToChinese(data));
//结果:零元
var data = 0.234;
console.log(numberToChinese(data));
//结果:零元贰角叁分肆厘
var data = -345.89;
console.log(numberToChinese(data));
//结果:负叁佰肆拾伍元捌角玖分
var data = -10004.89;
console.log(numberToChinese(data));
//结果:负壹万零仟零佰零拾肆元捌角玖分
var data = 50000;
console.log(numberToChinese(data));
//结果:伍万零仟零佰零拾零元
var data = 50000.0004;
console.log(numberToChinese(data));
//结果:伍万零仟零佰零拾零元





  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值