JS输入数字自动转换大写金额

本人后端,今天有个需求为输入数字,显示金额大写,百度借鉴之后改了一下,遂发本站

image

var numberInput = this.getValue("yjcgje");
var fraction = ['角', '分'];
var digit = [
    '零', '壹', '贰', '叁', '肆',
    '伍', '陆', '柒', '捌', '玖'
];
var unit = [
    ['元', '万', '亿'],
    ['', '拾', '佰', '仟']
];
var head = numberInput < 0 ? '欠' : '';
numberInput = Math.abs(numberInput);
var s = '';

for (var i = 0; i < fraction.length; i++) {
    s += (digit[Math.floor(numberInput * 10 * Math.pow(10, i)) % 10] + fraction[i]).replace(/零./, '');
}

s = s || '整';
numberInput = Math.floor(numberInput);

for (var i = 0; i < unit[0].length && numberInput > 0; i++) {
    var p = '';

    for (var j = 0; j < unit[1].length && numberInput > 0; j++) {
        p = digit[numberInput % 10] + unit[1][j] + p;
        numberInput = Math.floor(numberInput / 10);
    }
    s = p.replace(/(零.)+零$/, '').replace(/^$/, '零') + unit[0][i] + s;
}
 var uppercaseAmount=head + s.replace(/(零.)*零元/, '元')
                   .replace(/(零.)+/g, '零')
                   .replace(/^整$/, '零元整')
this.setData({"cgjedx":uppercaseAmount})

11 Likes

感谢分享:+1::+1::+1:

2 Likes

哈哈哈共建L站

感谢老友分享~

1 Like

感谢大佬分享 。

怎么又有你,你怕不是住在论坛了吧 :rofl:

不喜欢吗 :tieba_087:

前排围观支持一下

听说大帅哥 在L站有房 :tieba_026:

这是我用 o1 生成的,怎么感觉跟你这个差别不大

function numberToChineseCurrency(n) {
    var fraction = ['角', '分'];
    var digit = ['零','壹','贰','叁','肆','伍','陆','柒','捌','玖'];
    var unit = [['元','万','亿'],['','拾','佰','仟']];
    var head = n < 0 ? '负' : '';
    n = Math.abs(n);

    var s = '';
    for (var i = 0; i < fraction.length; i++) {
        s += (digit[Math.floor(n * 10 * Math.pow(10, i)) % 10] + fraction[i]).replace(/零./, '');
    }
    s = s || '整';
    n = Math.floor(n);

    for (var i = 0; i < unit[0].length && n > 0; i++) {
        var p = '';
        for (var j = 0; j < unit[1].length && n > 0; j++) {
            var d = n % 10;
            p = digit[d] + unit[1][j] + p;
            n = Math.floor(n / 10);
        }
        s = p.replace(/(零.)*零$/, '')
             .replace(/^$/, '零')
             + unit[0][i] + s;
    }

    return head + s.replace(/(零.)*零元/, '元')
                   .replace(/(零.)+/g, '零')
                   .replace(/^整$/, '零元整');
}

直接问克劳德,给你写一个chrome插件出来,好得很

路过给点个赞

这种事情就交给GPT吧

:tieba_018:

最后+改成*就好了,哈哈哈没想到还帮我测了个bug