一尘不染

在JavaScript中使用正好两位小数格式化数字

javascript

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

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

我想要数字10.80、2.40等。使用jQuery对我来说很好。


阅读 317

收藏
2020-04-23

共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还为您提供了多种格式选项,例如千位分隔符,货币符号等。

2020-04-23