小编典典

在 JavaScript 中格式化正好有两位小数的数字

all

我有这行代码将我的数字四舍五入到小数点后两位。但我得到这样的数字:10.8、2.4 等。这些不是我的小数点后两位的想法,所以我该如何改进以下内容?

Math.round(price*Math.pow(10,2))/Math.pow(10,2);

我想要 10.80、2.40 等数字。我可以使用 jQuery。


阅读 84

收藏
2022-03-06

共1个答案

小编典典

要使用定点符号格式化数字,您可以简单地使用toFixed方法:

(10.8).toFixed(2); // "10.80"

var num = 2.4;
alert(num.toFixed(2)); // "2.40"

注意toFixed()返回一个字符串。

重要提示 :请注意,toFixed 在 90% 的情况下不会四舍五入,它会返回四舍五入的值,但在许多情况下,它不起作用。

例如:

2.005.toFixed(2) === "2.00"

更新:

现在,您可以使用Intl.NumberFormat构造函数。它是ECMAScript
国际化 API 规范
(ECMA402)
的一部分。它有很好的浏览器支持,甚至包括 IE11,并且
Node.js 中得到完全支持

const formatter = new Intl.NumberFormat('en-US', {
   minimumFractionDigits: 2,      
   maximumFractionDigits: 2,
});

console.log(formatter.format(2.005)); // "2.01"
console.log(formatter.format(1.345)); // "1.35"

您也可以使用该toLocaleString方法,该方法在内部将使用IntlAPI:

const format = (num, decimals) => num.toLocaleString('en-US', {
   minimumFractionDigits: 2,      
   maximumFractionDigits: 2,
});


console.log(format(2.005)); // "2.01"
console.log(format(1.345)); // "1.35"

此 API 还为您提供了多种格式选项,例如千位分隔符、货币符号等。

2022-03-06