用js实现小写金额转大写的方法

在前端开发中,如果你想要实现一个功能,将小写金额(数字表示的金额)转换成中文大写金额,你可以通过编写一个JavaScript函数来完成这个任务。以下是一个简单的示例函数,用于将小写金额转换为中文大写金额:

function convertToChineseCurrency(amount) {
    const chineseNumbers = ['零', '壹', '贰', '叁', '肆', '伍', '陆', '柒', '捌', '玖'];
    const units = ['', '拾', '佰', '仟', '万', '亿'];
    const smallUnits = ['元', '角', '分'];

    // 检查输入是否合法
    if (isNaN(amount) || amount < 0 || amount > 9999999999.99) {
        return '金额不合法';
    }

    // 转换金额到字符串并分割整数部分和小数部分
    let [integerPart, decimalPart = ''] = String(amount).split('.');
    decimalPart = decimalPart.slice(0, 2); // 取小数点后两位

    // 处理整数部分
    let integerStr = '';
    const integerLength = integerPart.length;
    let unitIndex = 0; // 单位索引
    let zeroFlag = false; // 标记是否需要补零

    for (let i = 0; i < integerLength; i++) {
        const digit = parseInt(integerPart[i], 10);
        if (digit === 0) {
            zeroFlag = true;
        } else {
            if (zeroFlag) {
                integerStr += chineseNumbers[0];
                zeroFlag = false;
            }
            integerStr += chineseNumbers[digit] + units[integerLength - 1 - i];
            unitIndex = (integerLength - 1 - i) % 4;
            if (unitIndex === 0 && zeroFlag === false) {
                integerStr += units[4];
            }
        }
    }

    // 处理小数部分
    let decimalStr = '';
    if (decimalPart) {
        for (let i = 0; i < decimalPart.length; i++) {
            const digit = parseInt(decimalPart[i], 10);
            if (digit !== 0) {
                decimalStr += chineseNumbers[digit] + smallUnits[i];
            } else {
                if (decimalStr && decimalStr[decimalStr.length - 1] !== chineseNumbers[0]) {
                    decimalStr += chineseNumbers[0];
                }
            }
        }
    } else {
        decimalStr = chineseNumbers[0] + smallUnits[0];
    }

    // 拼接结果并返回
    let result = integerStr;
    if (integerStr && decimalStr && decimalStr !== chineseNumbers[0] + smallUnits[0] && decimalStr !== chineseNumbers[0] + smallUnits[1]) {
        result += '整' + decimalStr; // 如果整数部分和小数部分都不为空,并且小数部分不是0元或0分,则在中间加上“整”
    } else if (decimalStr !== chineseNumbers[0] + smallUnits[0]) {
        result = decimalStr; // 如果只有小数部分,直接返回小数部分
    } else {
        result += '元整'; // 如果整数部分不为空但小数部分为0元,则在末尾加上“元整”
    }

    return result;
}

// 示例用法
console.log(convertToChineseCurrency(1234567.89)); // 输出:壹佰贰拾叁万肆仟伍佰陆拾柒元捌角玖分
console.log(convertToChineseCurrency(10000)); // 输出:壹万元整
console.log(convertToChineseCurrency(0)); // 输出:零元整

这个函数将一个小写金额转换为中文大写金额,并考虑了金额中的整数部分和小数部分。请注意,这个函数是一个简单的示例,可能需要根据具体需求进行调整和优化。

posted @   王铁柱6  阅读(127)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
点击右上角即可分享
微信分享提示