我想格式化我的数字,总是显示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

其他回答

刚刚遇到了这个最长的线程,下面是我的解决方案:

parseFloat(Math.round((parseFloat(num * 100)).toFixed(2)) / 100 ).toFixed(2)

如果有人能找到漏洞就告诉我

你在找地板吗?

变量数 = 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

对于现代浏览器,使用toLocaleString:

var num = 1.345;
num.toLocaleString(undefined, { maximumFractionDigits: 2, minimumFractionDigits: 2 });

指定区域设置标记作为控制十进制分隔符的第一个参数。对于点,使用例如English U.S. locale:

num.toLocaleString("en-US", { maximumFractionDigits: 2, minimumFractionDigits: 2 });

这使:

1.35

大多数欧洲国家使用逗号作为小数分隔符,所以如果你使用瑞典/瑞典地区:

num.toLocaleString("sv-SE", { maximumFractionDigits: 2, minimumFractionDigits: 2 });

它会给:

1, 35

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

Math.floor(num* 100 )/100;

我是这样解决问题的:

parseFloat(parseFloat(floatString).toFixed(2));