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;
    }
}
function CheckAlls(checked) { len = document.frmmain.elements.length; var i=0; for( i=0; i<len; i++) { if (document.frmmain.elements[i].name=='check_node_0') { if(document.frmmain.elements[i].disabled == false){ document.frmmain.elements[i].checked=(checked==true?true:false); } } } } document.onpropertychange= function() { var a= document.getElementById('field6163').value;//取小写金额的值 var numberValue=new String(Math.round(a*100)); // 数字金额 var String1 = "零壹贰叁肆伍陆柒捌玖"; // 汉字数字 var String2 = "万仟佰拾亿仟佰拾万仟佰拾元角分"; // 对应单位 var len=numberValue.length; // numberValue 的字符串长度 //alert(len); var Ch1; // 数字的汉语读法 var Ch2; // 数字位的汉字读法 var nZero=0; // 用来计算连续的零值的个数 var String3; // 指定位置的数值 { if(len>15){ alert("超出计算范围"); return fase; } if (numberValue==0){ chineseValue = "零元整"; } else { chineseValue=""; } String2 = String2.substr(String2.length-len, len); // 取出对应位数的STRING2的值 for(var i=0; i= 3 ){ Ch1 = ""; Ch2 = ""; nZero = nZero + 1; } else{ Ch1 = ""; Ch2 = String2.substr(i, 1); nZero = nZero + 1; } if( i == (len - 11) || i == (len - 3)){ // 如果该位是亿位或元位,则必须写上 Ch2 = String2.substr(i, 1); } } chineseValue =chineseValue +Ch1 + Ch2; } if ( String3 == 0 ){ // 最后一位(分)为0时,加上“整” chineseValue = chineseValue + "整"; } } //alert(chineseValue); document.getElementById('field6421').value=chineseValue; }
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值