我想格式化我的数字,总是显示2小数点后,四舍五入适用的地方。

例子:

number     display
------     -------
1          1.00
1.341      1.34
1.345      1.35

我一直在用这个:

parseFloat(num).toFixed(2);

但是它把1显示为1,而不是1.00。


当前回答

用精度方法扩展数学对象

Object.defineProperty(数学、“精度”{ 值:函数(值,精度,类型){ var v = parseFloat(value) p = Math.max(precision,0)||0, T = type||'round'; 返回(数学[t] (v * Math.pow (p)) / Math.pow (p)) .toFixed (p); } }); console.log ( Math.precision(3.1,3), //四舍五入3位 Math.precision(0.12345,2,'ceil'), // ceil 2位数字 Math.precision(1.1) //整数 )

其他回答

你在找地板吗?

变量数 = 1.42482; var num2 = 1; var fnum = Math.floor(num).toFixed(2); var fnum2 = Math.floor(num2).toFixed(2); console.log(fnum + “ 和 ” + fnum2);两个值均为 1.00

试试下面的代码:

function numberWithCommas(number) { 

   var newval = parseFloat(Math.round(number * 100) / 100).toFixed(2);

   return newval.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",");
}

一个更通用的N位舍入解决方案

function roundN(num,n){
  return parseFloat(Math.round(num * Math.pow(10, n)) /Math.pow(10,n)).toFixed(n);
}


console.log(roundN(1,2))
console.log(roundN(1.34,2))
console.log(roundN(1.35,2))
console.log(roundN(1.344,2))
console.log(roundN(1.345,2))
console.log(roundN(1.344,3))
console.log(roundN(1.345,3))
console.log(roundN(1.3444,3))
console.log(roundN(1.3455,3))

Output

1.00
1.34
1.35
1.34
1.35
1.344
1.345
1.344
1.346

好消息! ! 似乎javascript的新版本ES2020(我只是使用)提供了这个函数的新行为。

let ff:number =3
console.info(ff.toFixed(2)) //3.00

根据需要。

parseInt(number * 100) / 100;为我工作。