JavaScript 数字格式化 最小/最大小数位数

8

我正在尝试创建一个函数,它可以将数字格式化为最少2位小数和最多4位小数。因此,如果我传入354545.33,我将得到354,545.33,如果我传入54433.6559943,我将得到54,433.6559。

function numberFormat(num){
    num = num+"";
    if (num.length > 0){

        num = num.toString().replace(/\$|\,/g,'');
        num = Math.floor(num * 10000) / 10000;

        num += '';
        x = num.split('.');
        x1 = x[0];
        x2 = x.length > 1 ? '.' + x[1] : '';
        var rgx = /(\d+)(\d{3})/;
        while (rgx.test(x1)) {
            x1 = x1.replace(rgx, '$1' + ',' + '$2');
        }
        return x1 + x2;

    }
    else{
        return num;
    }
}

有没有使用JavaScript的好理由? - yoda
@yoda - 那是一些非常高峰的SO回答! - floodlitworld
2个回答

23

我有一个类似的问题,如何设置“最大”小数位数,但不要求所有“最大”小数位数都必须存在(即“toFixed()”的填充部分)。我想出了一个基于您的答案的解决方案,我想分享一下: num.toFixed(max).replace(/ \ .?0 + $ /,''); - idolize
@idolize的解决方案更完整,因为它还会在没有小数位的情况下删除“.”。 - Danilo Freitas
是的,但这个问题特别指定了“最小2位小数,最大4位小数”。实际上,这已经超过5年了。现在我建议使用内置函数。 - kirilloid

0
你做错了。 54433.6559943.toFixed(4) 会四舍五入到小数点后四位,然后你需要删掉最多两个尾零。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接