js 金额大写转换

在这里插入图片描述

methods: {
//this.toRmb(100)
//金额大写
 toRmb(val) {
    const upperDigits = ['零', '壹', '贰', '叁', '肆', '伍', '陆', '柒', '捌', '玖'];
    const units = ['', '拾', '佰', '仟', '万', '拾万', '佰万', '仟万', '亿', '拾亿', '佰亿', '仟亿', '万亿'];
    const fractionalUnits = ['角', '分', '厘', '毫'];
    // 分离整数和小数部分
    let [integerPart, fractionalPart] = val.toString().split('.');
    integerPart = parseInt(integerPart);
    fractionalPart = fractionalPart ? parseInt(fractionalPart) : 0;

    if (Number.isNaN(integerPart) || integerPart < 0) return '';
    if (integerPart.toString().length > 15) return '数字较大溢出';

    let integerResult = '';
    if (integerPart === 0) {
        integerResult = '零';
    } else {
        let integerStr = integerPart.toString();
        let n = integerStr.length;
        for (let i = 0; i < n; i++) {
            let digit = integerStr[i];
            if (digit !== '0') {
                integerResult += upperDigits[digit] + units[n - i - 1];
            } else {
                if (i < n - 1 && integerStr[i + 1] !== '0') {
                    integerResult += '零';
                }
            }
        }
    }
    let fractionalResult = '';
    if (fractionalPart > 0) {
        let fractionalStr = fractionalPart.toString().padStart(4, '0');
        for (let i = 0; i < 4; i++) {
            let digit = fractionalStr[i];
            if (digit !== '0') {
                fractionalResult += upperDigits[digit] + fractionalUnits[i];
            }
        }
    }
    if (fractionalResult === '') {
        return integerResult + '元整';
    } else {
        return integerResult + '元' + fractionalResult;
    }
}
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值