Number.prototype.toFixed()
试一试
语法
js
toFixed()
toFixed(digits)
参数
digits
可选-
小数点后显示的数字位数;应为介于
0
和100
(含)之间的值。如果省略此参数,则将其视为0
。
返回值
使用定点表示法表示给定数字的字符串。如果数字的量级(忽略符号)大于或等于 1021,则使用科学记数法(与 Number.prototype.toString()
的返回值相同)。
异常
RangeError
-
如果
digits
不在0
和100
(含)之间,则抛出此异常。 TypeError
-
如果此方法在不是
Number
的对象上调用,则抛出此异常。
描述
toFixed()
方法返回一个数字的字符串表示形式,不使用 指数表示法,并且小数点后正好有 digits
位数字。如有必要,将对数字进行舍入,并且如有必要,将用零填充小数部分,使其具有指定的长度。
如果数字的绝对值大于或等于 1021,则此方法使用与 Number.prototype.toString()
相同的算法,并返回一个指数表示法的字符串。如果数字的值是非有限的,则 toFixed()
返回 "Infinity"
、"NaN"
或 "-Infinity"
。
对于某些值,toFixed()
的输出可能比 toString()
更精确,因为 toString()
只打印足以区分该数字与相邻数字值的有效数字。例如
js
(1000000000000000128).toString(); // '1000000000000000100'
(1000000000000000128).toFixed(0); // '1000000000000000128'
但是,选择过高的 digits
精度可能会返回意外的结果,因为十进制分数在浮点数中无法精确表示。例如
js
(0.3).toFixed(50); // '0.29999999999999998889776975374843459576368331909180'
示例
使用 toFixed()
js
const numObj = 12345.6789;
numObj.toFixed(); // '12346'; rounding, no fractional part
numObj.toFixed(1); // '12345.7'; it rounds up
numObj.toFixed(6); // '12345.678900'; additional zeros
(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'; it rounds up
(2.55).toFixed(1); // '2.5'
// it rounds down as it can't be represented exactly by a float and the
// closest representable float is lower
(2.449999999999999999).toFixed(1); // '2.5'
// it rounds up as it's less than Number.EPSILON away from 2.45.
// This literal actually encodes the same number value as 2.45
(6.02 * 10 ** 23).toFixed(50); // 6.019999999999999e+23; large numbers still use exponential notation
对负数使用 toFixed()
因为成员访问的 优先级 高于一元减号,所以需要对负数表达式进行分组才能获得字符串。
js
-2.34.toFixed(1); // -2.3, a number
(-2.34).toFixed(1); // '-2.3'
规范
规范 |
---|
ECMAScript 语言规范 # sec-number.prototype.tofixed |
浏览器兼容性
BCD 表格仅在启用 JavaScript 的浏览器中加载。