numObj.toExponential(fractionDigits)
Number.prototype.toExponential() 方法以指数表示法返回该数值字符串表示形式。
对数值字面量使用 toExponential() 方法,且该数值没有小数点和指数时,应该在该数值与该方法之间隔开一个空格,以避免点号被解释为一个小数点。
也可以使用两个点号调用该方法。
fractionDigits 是一个可选参数。一个整数,用来指定小数点后有几位数字。
默认情况下用尽可能多的位数来显示数字。
如果该参数是一个非整数值,将会向下舍入到最接近的整数。
如果 fractionDigits 参数被忽略了,小数点后的将尽可能用最多的位数`来表示该数值。
一个用幂的形式 (科学记数法) 来表示Number 对象的字符串。
小数点后以fractionDigits 提供的值来四舍五入。
如果一个数值的小数位数多于 fractionDigits 参数所提供的,则该数值将会在 fractionDigits 指定的小数位数处四舍五入。
查看 Number.prototype.toFixed() 方法关于四舍五入的讨论,同样应用于 toExponential() 方法。
如果 fractionDigits 太小或太大将会抛出该错误。介于 1 和 100 (包括边界值)之间的值不会引起 RangeError 。
执行环境也可以支持更大或更小范围。
如果该方法在一个非数值类型对象上调用。
(() => {
const { log } = console;
const numObj = 77.1234;
log('numObj.toExponential() is ' + numObj.toExponential()); //numObj.toExponential() is 7.71234e+1
log('numObj.toExponential(4) is ' + numObj.toExponential(4)); //numObj.toExponential(4) is 7.7123e+1
log('numObj.toExponential(2) is ' + numObj.toExponential(2)); //numObj.toExponential(2) is 7.71e+1
log('77.1234.toExponential() is ' + 77.1234.toExponential()); //77.1234.toExponential() is 7.71234e+1
log('77 .toExponential() is ' + 77 .toExponential()); //77 .toExponential() is 7.7e+1
log('77 .toExponential(101) is ' + 77 .toExponential(101)); //Uncaught RangeError: toExponential() argument must be between 0 and 100
})()
numObj.toPrecision(precision)
Number.prototype.toPrecision()方法以指定的精度返回该数值对象的字符串表示。
对数值字面量使用 toPrecision() 方法,且该数值没有小数点和指数时,应该在该数值与该方法之间隔开一个空格,以避免点号被解释为一个小数点。
也可以使用两个点号调用该方法。
precision 是一个可选参数。用来指定有效数个数的整数。
如果忽略 precision 参数,则该方法表现类似于 Number.prototype.toString()。
如果该参数是一个非整数值,将会向下舍入到最接近的整数。
以定点表示法或指数表示法表示的一个数值对象的字符串表示,四舍五入到 precision 参数指定的显示数字位数。
查看 Number.prototype.toFixed() 方法关于四舍五入的讨论,同样应用于 toPrecision() 方法。
如果 precison 参数不在 1 和 100 (包括边界值)之间,将会抛出一个 RangeError 。
执行环境也可以支持更大或更小的范围。ECMA-262 只需要最多 21 位显示数字。
如果该方法在一个非数值类型对象上调用。
(() => {
const { log } = console;
const numObj = 5.123456;
log('numObj.toPrecision() is ' + numObj.toPrecision()); // numObj.toPrecision() is 5.123456
log('numObj.toPrecision(5) is ' + numObj.toPrecision(5)); // numObj.toPrecision(5) is 5.1235
log('numObj.toPrecision(2) is ' + numObj.toPrecision(2)); // numObj.toPrecision(2) is 5.1
log('numObj.toPrecision(1) is ' + numObj.toPrecision(1)); // numObj.toPrecision(1) is 5
// 注意:在某些情况下会以指数表示法返回
log((1234.5).toPrecision(2)); // '1.2e+3'
log(123 .toPrecision(101));// Uncaught RangeError: toPrecision() argument must be between 1 and 100
})()