js格式化金额 - 数字千分化

方法1
复制代码
/**
 * 格式化金额 - 数字千分化,保留两位小数
 * @param {number | string} num - 输入的数字或字符串
 * @returns {string} - 格式化后的金额字符串,空值时返回 '0.00'
 */
export function numToMoney(num) {
    // 检查输入是否为空或无效数字
    if (num === null || num === undefined || num === '' || isNaN(Number(num))) {
        return '0.00'; // 空值或非法数字返回 0.00
    }

    // 转换为数字类型并处理精度问题
    let value = Math.round(Number(num) * 100) / 100; // 先放大100倍取整,避免浮点数精度问题
    let [integerPart, decimalPart] = value.toString().split('.'); // 分割整数和小数部分

    // 如果小数部分不存在,补全为两位
    decimalPart = decimalPart ? decimalPart.padEnd(2, '0') : '00';

    // 对整数部分进行千分位格式化
    const formattedInteger = integerPart.replace(/\B(?=(\d{3})+(?!\d))/g, ',');

    // 合并结果并返回
    return `${formattedInteger}.${decimalPart}`;
}
复制代码

 

方法2
复制代码
/**
 * 格式化金额 - 数字千分化
 * @param {number | string} num - 输入的数字或字符串
 * @returns {string} - 格式化后的金额字符串,空值时返回 '-'
 */
export function numToMoney(num) {
    // 检查输入是否为空
    if (num === null || num === undefined || num === '') {
        return '-';
    }

    // 将输入的数字转换为字符串
    const str = num.toString();

    // 分离整数部分和小数部分
    const [integerPart, decimalPart] = str.split('.');

    // 处理整数部分,千分位分隔
    const formattedInteger = integerPart
        .split('')
        .reverse()
        .reduce((prev, next, index) => {
            return (index % 3 ? next : next + ',') + prev;
        });

    // 合并整数部分和小数部分
    return decimalPart ? `${formattedInteger}.${decimalPart}` : formattedInteger;
}
复制代码
posted @   行走的蒲公英  阅读(248)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
点击右上角即可分享
微信分享提示