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