数字转为大写格式(货币)

不确定是不是能正确转化所有数字,如发现有哪些数字转化不对,请指正

 

function digit2Uppercase (num) {
    var digit, iUnit, dUnit, index, iStr, dStr, MAX_NUM = 999999999999.99;

    if (num > MAX_NUM) {
        return 'Exceed the upper limit ' + MAX_NUM;
    }

    digit = ['零','壹','贰','叁','肆','伍','陆','柒','捌','玖'];
    iUnit = ['元','拾','佰','仟','万','拾','佰','仟','亿','拾','佰','仟'];
    dUnit = ['角', '分'];
    index = 0;

    dStr = '';
    for (index = 0; index < dUnit.length; index++) {
        dStr += digit[Math.floor(num * Math.pow(10, index + 1)) % 10] + dUnit[index];
    }
    dStr = dStr.replace(/零./g, '零').replace(/零+$/, '');

    num = Math.floor(num);
    iStr = '';
    for (index = 0; index < iUnit.length && num > 0; index++) {
        iStr = digit[num % 10] + iUnit[index] + iStr;
        num = Math.floor(num / 10);
    }
    iStr = iStr.replace(/(?:零[^亿万])*零([亿万元])/g, '$1').replace(/(零.)+/g, '零').replace('亿万', '亿零').replace(/零零+/g, '零').replace('零元', '元');
    iStr += dStr || '整';
    iStr = iStr.replace(/^整$/, '零元整');
    return iStr;
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值