Number.prototype.toFixed()
Baseline Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.
Number
值的 toFixed()
方法使用定点表示法来格式化该数值。
尝试一下
语法
toFixed()
toFixed(digits)
参数
digits
可选-
小数点后的位数。应该是一个介于
0
和100
之间的值,包括0
和100
。如果这个参数被省略,则被视为0
。
返回值
使用定点表示法表示给定数字的字符串。
异常
RangeError
-
如果
digits
不是介于0
和100
之间(含两端)的值,则抛出该异常。 TypeError
-
如果不是在
Number
上调用该方法,则抛出该异常。
描述
toFixed()
方法返回一个表示 numObj
的字符串,但不使用指数计数法,并且小数点后有精确到 digits
位的数字。如果需要截断,则将数字四舍五入;如果小数位数不足,则小数部分用零填充,以使其具有指定长度。
如果 numObj
的绝对值大于或等于 1021,则该方法使用与 Number.prototype.toString()
相同的算法,并以指数计数法返回字符串。如果 numObj
的值不是有限的,则 toFixed()
会返回 "Infinity"
、"NaN"
或 "-Infinity"
。
toFixed()
对于某些值可能具有比 toString
更加精确的输出,因为 toString()
只输出足够的有效数字来区分该数值与邻近的数值。例如:
(1000000000000000128).toString(); // '1000000000000000100'
(1000000000000000128).toFixed(0); // '1000000000000000128'
然而,选择一个过高的 digits
精度会导致意外的结果,因为小数部分的数字不能精确地表示成浮点数。例如:
(0.3).toFixed(50); // '0.29999999999999998889776975374843459576368331909180'
示例
使用 toFixed()
const numObj = 12345.6789;
numObj.toFixed(); // '12346';四舍五入,没有小数部分
numObj.toFixed(1); // '12345.7';向上舍入
numObj.toFixed(6); // '12345.678900';用零补足位数
(1.23e20).toFixed(2); // '123000000000000000000.00'
(1.23e-10).toFixed(2); // '0.00'
(2.34).toFixed(1); // '2.3'
(2.35).toFixed(1); // '2.4';向上舍入
(2.55).toFixed(1); // '2.5'
// 它向下舍入,因为它无法用浮点数精确表示,并且最接近的可表示浮点数较小
(2.449999999999999999).toFixed(1); // '2.5'
// 向上舍入,因为它与 2.45 的差值小于 Number.EPSILON。
// 这个字面量实际上编码和 2.45 相同的数值
(6.02 * 10 ** 23).toFixed(50); // 6.019999999999999e+23;大数仍然使用指数表示法
对负数使用 toFixed()
由于成员访问的优先级高于一元减号,你需要将负数表达式组合以获得一个字符串。
-2.34.toFixed(1); // -2.3,数字
(-2.34).toFixed(1); // '-2.3'
规范
Specification |
---|
ECMAScript Language Specification # sec-number.prototype.tofixed |
浏览器兼容性
BCD tables only load in the browser