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

2022-08-30 02:44:08

我是JavaScript的新手,刚刚发现并四舍五入数字。但是,我无法弄清楚两者之间的区别是什么。toFixed()toPrecision()

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


答案 1

toFixed(n)提供小数点后的长度; 提供总长度。ntoPrecision(x)x

在w3schools的参考:toFixedtoPrecision

编辑
我不久前了解到w3schools并不完全是最好的来源,但我忘记了这个答案,直到我看到kzh的,呃,“热情”的评论。以下是来自 Mozilla Doc Center toFixed()toPrecision() 的其他引用。幸运的是,对于我们所有人来说,在这种情况下,MDC和w3schools彼此同意。

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


答案 2

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

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”一书。