千分位分隔函数

65 阅读1分钟
const formatNumberToThousands = (num) =>{

    //确保输入是数字类型且不是NaN
    if(isNaN(num) || typeof(num)!==='number'){
        throw new Error('请输入正确的数据类型')
    }
    
    // 处理负数:提取符号并转为正数处理
    const sign = num < 0 ? '-' : ''
    const absoluteNum = Math.abs(num)
    
    //将数字转为字符串并拆分为整数和小数部分
    const [interge,decimal] = absoluteNum.toString().split('.')
    
    //从整数部分末尾向前遍历
    let formatNumber = ''
    for(let i = interge.length-1;i>=0;i--){
        formatNumber = interge[i] + formatNumber
        
        // 每处理3位数字且不是首位时,添加逗号分隔符
        if((interge.length-i)%3===0 && i!==0){
            formatNumber = ',' + formatNumber
        }
    }
    
    //最终结果:符号 + 整数部分 + 小数部分(如果存在)
    const formattedNumber = sign + formattedInteger
    return decimal ? `${formatNumber}.${decimal}` : formatNumber
}