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

例子:

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

我一直在用这个:

parseFloat(num).toFixed(2);

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


当前回答

你可以使用numeric .js。

numeral(1.341).format('0.00') // 1.34
numeral(1.345).format('0.00') // 1.35

其他回答

我建议你用

new Intl.NumberFormat('de-DE', { minimumFractionDigits: 2, maximumFractionDigits: 2 }).format(num)

这样,您还将拥有指定国家的本地格式,并且它将确保显示精确的2个小数(无论num是1还是1.12345,它将分别显示1.00和1.12)

在这个例子中,我使用德语本地化,因为我想我的数字显示与千分隔符,所以这将是一些输出:

1 => 1,00
1.12 => 1,12
1.1234 => 1,12
1234 => 1.234,00
1234.1234 => 1.234,12

简单的回答是:

var num = 1.2353453;
num.toFixed(2); // 1.24

例如:http://jsfiddle.net/E2XU7/

为了获得最精确的舍入,创建这个函数并使用它舍入到小数点后2位:

功能轮(价值,十进制)( return编号(数学。(价值+ e +十进制)+ e-' +十进制)。 ) log(“seeked to”+ round(1,005,2));

> 1.01

感谢Razu、这篇文章和MDN的数学。圆的参考。

这里有另一个只使用底价的四舍五入的解决方案,这意味着,确保计算的金额不会大于原始金额(有时交易需要):

Math.floor(num* 100 )/100;

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

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

根据需要。