Number.prototype.toFixed()
Number
值的 toFixed()
方法使用具有指定小数位数的 定点表示法 返回一个表示此数字的字符串。
¥The toFixed()
method of Number
values returns a string representing this number using fixed-point notation with the specified number of decimal places.
Try it
语法
参数
返回值
¥Return value
使用定点表示法表示给定数字的字符串。如果数字的量级(忽略符号)大于或等于 1021(返回值与 Number.prototype.toString()
相同),则使用科学计数法。
¥A string representing the given number using fixed-point notation. Scientific notation is used if the number's magnitude (ignoring sign) is greater than or equal to 1021 (same return value as Number.prototype.toString()
).
例外情况
描述
¥Description
toFixed()
方法返回数字的字符串表示形式,不使用 指数表示法,并且小数点后恰好有 digits
位。如果需要,该数字将被舍入,并且如果需要,小数部分将用零填充,以使其具有指定的长度。
¥The toFixed()
method returns a string representation of a number without using exponential notation and with exactly digits
digits after the decimal point. The number is rounded if necessary, and the fractional part is padded with zeros if necessary so that it has the specified length.
如果数字的绝对值大于或等于 1021,则该方法使用与 Number.prototype.toString()
相同的算法,并返回指数形式的字符串。如果数字的值非有限,则 toFixed()
返回 "Infinity"
、"NaN"
或 "-Infinity"
。
¥If the absolute value of the number is greater or equal to 1021, this method uses the same algorithm as Number.prototype.toString()
and returns a string in exponential notation. toFixed()
returns "Infinity"
, "NaN"
, or "-Infinity"
if the value of the number is non-finite.
对于某些值,toFixed()
的输出可能比 toString()
更精确,因为 toString()
只打印足够的有效数字来区分该数字与相邻的数字值。例如:
¥The output of toFixed()
may be more precise than toString()
for some values, because toString()
only prints enough significant digits to distinguish the number from adjacent number values. For example:
(1000000000000000128).toString(); // '1000000000000000100'
(1000000000000000128).toFixed(0); // '1000000000000000128'
但是,选择太高的 digits
精度可能会返回意外结果,因为十进制小数无法用浮点精确表示。例如:
¥However, choosing a digits
precision that's too high can return unexpected results, because decimal fractional numbers cannot be represented precisely in floating point. For example:
(0.3).toFixed(50); // '0.29999999999999998889776975374843459576368331909180'
示例
使用 toFixed()
¥Using toFixed()
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() 与负数一起使用
¥Using toFixed() with negative numbers
因为成员访问的 precedence 比一元减号高,所以需要对负数表达式进行分组才能得到字符串。
¥Because member access has higher precedence than unary minus, you need to group the negative number expression to get a string.
-2.34.toFixed(1); // -2.3, a number
(-2.34).toFixed(1); // '-2.3'
规范
Specification |
---|
ECMAScript Language Specification # sec-number.prototype.tofixed |
浏览器兼容性
BCD tables only load in the browser