function amountToChinese(num) {
    // 定义中文数字和单位
    const cnNums = ['零', '壹', '贰', '叁', '肆', '伍', '陆', '柒', '捌', '玖'];
    const cnIntRadice = ['', '拾', '佰', '仟'];
    const cnIntUnits = ['', '万', '亿', '兆'];
    const cnDecUnits = ['角', '分', '毫', '厘'];
    const cnInteger = '整';
    const cnIntLast = '元';
    const maxNum = 9999999999999.9999; // 最大处理的数字
    if (num === '') {
        return '';
    }
    num = parseFloat(num);
    if (num >= maxNum) {
        return '超出最大处理数字';
    }
    if (num === 0) {
        return cnNums[0] + cnIntLast + cnInteger;
    }
    let numStr = num.toString();
    let integerNum = parseInt(numStr.split('.')[0]);
    let decimalNum = numStr.split('.')[1];
    let output = '';
    if (integerNum > 0) {
        let zeroCount = 0;
        let IntLen = integerNum.toString().length;
        for (let i = 0; i < IntLen; i++) {
            let n = integerNum.toString().substring(i, i + 1);
            let p = IntLen - i - 1;
            let q = Math.floor(p / 4);
            let m = p % 4;
            if (n === '0') {
                zeroCount++;
            } else {
                if (zeroCount > 0) {
                    output += cnNums[0];
                }
                zeroCount = 0;
                output += cnNums[n] + cnIntRadice[m];
            }
            if (m === 0 && zeroCount < 4) {
                output += cnIntUnits[q];
            }
        }
        output += cnIntLast;
    }
    if (decimalNum) {
        let decLen = decimalNum.length;
        for (let i = 0; i < decLen; i++) {
            let n = decimalNum.substring(i, i + 1);
            if (n !== '0') {
                output += cnNums[n] + cnDecUnits[i];
            }
        }
    }
    if (output.slice(-1) === '整') {
        output += cnInteger;
    } else if (output.indexOf(cnDecUnits[0]) >= 0 || output.indexOf(cnDecUnits[1]) >= 0) {
        output += cnInteger;
    }
    return output;
}
// 示例
console.log(amountToChinese(123456789.89)); // 壹亿贰仟叁佰肆拾伍万陆仟柒佰捌拾玖元捌角玖分整cnNums 是中文数字,cnIntRadice 是个、十、百、千的单位,cnIntUnits 是万、亿、兆等大单位,cnDecUnits 是角、分、毫、厘的小单位。这个函数可以将任意金额转换为中文大写形式。
上一篇:js 大写字母转小写
下一篇:js 把大写转为小写
Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3
Laravel 中文站