toFixed()和toPrecision()之间的区别?

我是JavaScript新手,刚刚发现toFixed()toPrecision()来整数。 但是,我无法弄清楚两者之间的区别。

number.toFixed()number.toPrecision()之间有什么区别?

toFixed(n)在小数点后面提供n长度; toPrecision(x)提供x总长度。

参考w3schools: toFixed和toPrecision

编辑
我学会了一段时间,w3schools不是最好的来源,但我忘了这个答案,直到我看到kzh的,呃,“热烈”的评论。 以下是Mozilla文档中心针对toFixed()toPrecision() 。 对我们所有人来说幸运的是,MDC和w3schools在这种情况下是一致的。

为了完整性,我应该提到toFixed()相当于toFixed(0)toPrecision()只是返回没有格式的原始数字。

我相信前者给你一个固定的小数位数,而后者给你一个固定的有效位数。

 Math.PI.toFixed(2); // "3.14" Math.PI.toPrecision(2); // "3.1" 

此外,如果数字中的整数位数超过了指定的精度, toPrecision将产生科学记数法 。

 (Math.PI * 10).toPrecision(2); // "31" (Math.PI * 100).toPrecision(2); // "3.1e+2" 

编辑:哦,如果你是JavaScript的新手,我可以强烈推荐Douglas Crockford的书“ JavaScript:The Good Parts ”。

我认为这是最好的例子。

假设您有以下数据:

 var products = [ { "title": "Really Nice Pen", "price": 150 }, { "title": "Golf Shirt", "price": 49.99 }, { "title": "My Car", "price": 1234.56 } ] 

您希望以标题和格式化的价格显示每个产品。 首先尝试使用toPrecision

 document.write("The price of " + products[0].title + " is $" + products[0].price.toPrecision(5)); The price of Really Nice Pen is $150.00 

看起来不错,所以你可能会认为这也适用于其他产品:

 document.write("The price of " + products[1].title + " is $" + products[2].price.toPrecision(5)); document.write("The price of " + products[2].title + " is $" + products[2].price.toPrecision(5)); The price of Golf Shirt is $49.990 The price of My Car is $1234.6 

不太好。 我们可以通过更改每个产品的有效位数来解决这个问题,但是如果我们正在迭代可能非常棘手的产品arrays。 我们使用toFixed来代替:

 document.write("The price of " + products[0].title + " is $" + products[0].price.toFixed(2)); document.write("The price of " + products[1].title + " is $" + products[2].price.toFixed(2)); document.write("The price of " + products[2].title + " is $" + products[2].price.toFixed(2)); The price of Really Nice Pen is $150.00 The price of Golf Shirt is $49.99 The price of My Car is $1234.56 

这产生你所期望的。 没有猜测的工作,也没有四舍五入。

只是:

 49.99.toFixed(5) // → "49.99000" 49.99.toPrecision(5) // → "49.990" 

在某些情况下, toPrecision()将返回指数表示法,而toFixed()则不会。

例如,我们考虑variablesa,var a = 123.45 a.toPrecision(6)输出是123.450 a.toFixed(6)输出结果是123.45000000