# Number类型格式化字符串方法toFixed()、toExponential()、toPrecision()
以上三种方法共同点:
- 传入的参数值过于小或者过于大时(不在规定范围内), 会抛出异常 RangeError。
- 当调用该方法的对象不是 Number 时抛出 TypeError 异常。
1. JavaScript toFixed()
toFixed()方法可把 Number 四舍五入为指定小数位数的(字符串类型)数字。
语法
NumberObject.toFixed(params);
params: 参数(必传)。规定小数的位数, 参数值范围是0 ~ 2之间, 包含0和20, 默认值为0, 并且该参数可以是 字符串类型的数字 和 普通数字类型
当params值过于小或者过于大时(不在规定范围内0 ~ 20之间), 会抛出异常 RangeError。
返回值
返回 NumberObject 的字符串表示, 不采用指数计数法, 小数点后有固定的 params 位数字。如果必要,该数字会被舍入,也可以用 0 补足,以便它达到指定的长度。如果 num 大于 le+21,则该方法只调用 NumberObject.toString(),返回采用指数计数法表示的字符串。
实例
let num = 10;
console.log(num.toFixed(2)); // "10.00"
console.log(num.toFixed("2")); // "10.00"
2. JavaScript toExponential()
#
toExponential()方法返回以指数表示法(也称 e 表示法)表示的数值的字符串形式。简单来说就是toExponential()方法可把对象的值转换成指数计数法。
语法
NumberObject.toExponential(params);
params: 参数(必传)。规定指数计数法中的小数位数, 取值范围同toFixed一样在0 ~ 20之间。如果省略该参数, 将使用尽可能多的数字。
当params值过于小或者过于大时(不在规定范围内0 ~ 20之间), 会抛出异常 RangeError。
返回值
返回
NumberObject的字符串表示, 采用指数计数法, 即小数点之前有一位数字, 小数点之后有params位数字。该数字的小数部分将被舍入, 必要时用 0 补足, 以便它达到指定的长度。 实例
let num = 10;
console.log(num.toExponential(2)); // "1.00e+1"
3. JavaScript toPrecision()
toPrecision()方法可在对象的值超出指定位数时将其转换为指数计数法。toPrecision()方法可能会返回固定大小(fixed)格式, 也可能返回指数(exponential)格式。
实际上,toPrecision()会根据要处理的数值决定到底是调用 toFixed()还是调用 toExponential()。
语法
NumberObject.toPrecision(params);
params: 参数(必传)。规定必须被转换为指数计数法的最小位数。该参数是 1 ~ 21 之间(且包括 1 和 21)的值。有效实现允许有选择地支持更大或更小的 num。如果省略了该参数,则调用方法 toString(),而不是把数字转换成十进制的值。 当params值过于小或者过于大时(不在规定范围内0 ~ 21之间), 会抛出异常 RangeError。
返回值
返回
NumberObject的字符串表示,包含params个有效数字。如果params足够大, 能够包括NumberObject整数部分的所有数字, 那么返回的字符串将采用定点计数法。否则, 采用指数计数法, 即小数点前有一位数字, 小数点后有params-1位数字。必要时, 该数字会被舍入或用0补足。
实例
var num = 99;
console.log(num.toPrecision(1)); // "1e+2" 一位数无法准确地表示 99,向上舍入为 100
console.log(num.toPrecision(2)); // "99" 两位数表示
console.log(num.toPrecision(3)); // "99.0" 三位数表示