如何在JavaScript中格式化数字?

如何在JavaScript中格式化数字?,javascript,Javascript,如何在JavaScript中格式化数字 如果你在谷歌上搜索javascript printf,你会发现很多实现。使用javascript最好的方法是在数字上使用toFixed()和toPrecision()函数 var num = 10; var result = num.toFixed(2); // result will equal 10.00 num = 930.9805; result = num.toFixed(3); // result will equal 930.981

如何在JavaScript中格式化数字



如果你在谷歌上搜索javascript printf,你会发现很多实现。

使用javascript最好的方法是在数字上使用toFixed()和toPrecision()函数

var num = 10;
var result = num.toFixed(2); // result will equal 10.00

num = 930.9805;
result = num.toFixed(3); // result will equal 930.981

num = 500.2349;
result = num.toPrecision(4); // result will equal 500.2

num = 5000.2349;
result = num.toPrecision(4); // result will equal 5000

num = 555.55;
result = num.toPrecision(2); // result will equal 5.6e+2
货币、逗号和其他格式必须由您或第三方库完成。

改进后的脚本(之前的脚本有缺陷,抱歉;老实说,我也没有测试过),它的工作方式类似于php number\u格式:

function formatFloat(num,casasDec,sepDecimal,sepMilhar) {
    if (num < 0)
    {
        num = -num;
        sinal = -1;
    } else
        sinal = 1;
    var resposta = "";
    var part = "";
    if (num != Math.floor(num)) // decimal values present
    {
        part = Math.round((num-Math.floor(num))*Math.pow(10,casasDec)).toString(); // transforms decimal part into integer (rounded)
        while (part.length < casasDec)
            part = '0'+part;
        if (casasDec > 0)
        {
            resposta = sepDecimal+part;
            num = Math.floor(num);
        } else
            num = Math.round(num);
    } // end of decimal part
    while (num > 0) // integer part
    {
        part = (num - Math.floor(num/1000)*1000).toString(); // part = three less significant digits
        num = Math.floor(num/1000);
        if (num > 0)
            while (part.length < 3) // 123.023.123  if sepMilhar = '.'
                part = '0'+part; // 023
        resposta = part+resposta;
        if (num > 0)
            resposta = sepMilhar+resposta;
    }
    if (sinal < 0)
        resposta = '-'+resposta;
    return resposta;
}
函数formatFloat(num、casasDec、sepdecmal、sepMilhar){
if(num<0)
{
num=-num;
正弦=-1;
}否则
正弦=1;
var resposta=“”;
var part=“”;
如果(num!=Math.floor(num))//存在十进制值
{
part=Math.round((num Math.floor(num))*Math.pow(10,casasDec)).toString();//将小数部分转换为整数(舍入)
while(零件长度0)
{
resposta=小数+部分;
num=数学地板(num);
}否则
num=Math.round(num);
}//小数点后
while(num>0)//整数部分
{
part=(num-Math.floor(num/1000)*1000.toString();//part=三个低有效位
num=数学楼层(num/1000);
如果(数值>0)
而(part.length<3)//123.023.123,如果sepMilhar='。'
部分='0'+部分;//023
resposta=零件+resposta;
如果(数值>0)
resposta=sepMilhar+resposta;
}
if(正弦<0)
resposta='-'+resposta;
返回响应;
}

所有这些都有自己的缺陷。