(1)Number.isFinite() & Number.isNaN()——ES6
①Number.isfinite()用来检查一个数值是否为有限的(infinite),即不是Infinity
1 console.log(Number.isFinite(12)); // true 2 console.log(Number.isFinite(NaN)); // false 3 console.log(Number.isFinite(Infinity)); // false 4 console.log(Number.isFinite("abc")); // false
注意:如果参数类型不是数值,一律返回false
②Number.isNaN()
用来检查一个值是否为NaN(NaN:Not a Number)
1 Number.isNaN(NaN) // true 2 Number.isNaN(15) // false 3 Number.isNaN('15') // false 4 Number.isNaN(true) // false 5 Number.isNaN(9/NaN) // true 6 Number.isNaN('true' / 0) // true 7 Number.isNaN('true' / 'true') // true
注意:如果参数类型不是NaN,Number.isNaN一律返回false
这里还有需要注意的是Number.isNaN()和Number.isFinite()与传统的isNaN()和isFinite()的区别:
比如:
Number.isNaN("a") // false isNaN("a") // true
说明:
- 传统方法发先调用Number()将非数值的值转为数值,再进行判断
- 而这两个方法只对数值有效
1 isFinite(25) // true 2 isFinite("25") // true 3 Number.isFinite(25) // true 4 Number.isFinite("25") // false 5 6 isNaN(NaN) // true 7 isNaN("NaN") // true 8 Number.isNaN(NaN) // true 9 Number.isNaN("NaN") // false 10 Number.isNaN(1) // false
(2)Number.isInteger() & Number.isSafeInteger()
①Number.isInteger()
用来判断一个数值是否为整数
1 console.log(Number.isInteger(12)); // true 2 console.log(Number.isInteger(12.12)); // false
②Number.isSafeInteger()
方法用来判断传入的参数值是否是一个“安全整数”(safe integer)。
一个安全整数是一个符合下面条件的整数:
- 可以准确地表示为一个IEEE-754双精度数字,
- 其IEEE-754表示不能是舍入任何其他整数以适应IEEE-754表示的结果。.
(3)Number.parseFloat()——ES6
ES6 将全局方法parseInt()
和parseFloat()
,移植到Number
对象上面,行为完全保持不变。
Number.parseFloat()
方法可以把一个字符串解析成浮点数。该方法与全局的 parseFloat()
函数相同,并且处于 ECMAScript 6 规范中(用于全局变量的模块化)
parseFloat(3.14); parseFloat('3.14'); parseFloat(' 3.14 '); parseFloat('314e-2'); parseFloat('0.0314E+2'); parseFloat('3.14some non-digit characters'); parseFloat({ toString: function() { return "3.14" } });
说明:
- 如果
parseFloat
在解析过程中遇到了正号(+
)、负号(-
U+002D HYPHEN-MINUS)、数字(0
-9
)、小数点(.
)、或者科学记数法中的指数(e 或 E)以外的字符,则它会忽略该字符以及之后的所有字符,返回当前已经解析到的浮点数。
(4)Number.parseInt()——ES6
这个方法和全局的 parseInt()
函数具有一样的函数功能
parseInt(string, radix) 解析一个字符串并返回指定基数的十进制整数
- string:要被解析的值。如果参数不是一个字符串,则将其转换为字符串(使用
ToString
抽象操作)。字符串开头的空白符将会被忽略。 - radix:(可选)从
2
到36
,表示字符串的基数。例如指定 16 表示被解析值是十六进制数。请注意,10不是默认值!
说明:
parseInt
函数将其第一个参数转换为一个字符串,对该字符串进行解析,然后返回一个整数或NaN
。- 如果不是
NaN
,返回值将是以第一个参数作为指定基数 radix 的转换后的十进制整数。(例如,radix
为10
,就是可以转换十进制数,为8
可以转换八进制数"07",16
可以转换十六进制数"0xff",以此类推)。 - 对于
radix
为10
以上的,英文字母表示大于9
的数字。例如,对于十六进制数(基数16
),则使用A
到F
。 - 如果
parseInt
遇到的字符不是指定radix
参数中的数字,它将忽略该字符以及所有后续字符,并返回到该点为止已解析的整数值。parseInt
将数字截断为整数值。 允许前导和尾随空格。 - 由于某些数字在其字符串表示形式中使用e字符(例如
6.022×23
表示6.022e23
),因此当对非常大或非常小的数字使用数字时,使用parseInt
截断数字将产生意外结果。parseInt
不应替代Math.floor()
。 parseInt
可以理解两个符号。+
表示正数,-
表示负数(从ECMAScript 1开始)。它是在去掉空格后作为解析的初始步骤进行的。如果没有找到符号,算法将进入下一步;否则,它将删除符号,并对字符串的其余部分进行数字解析。- 如果
radix
是undefined
、0
或未指定的,JavaScript会假定以下情况:- 如果输入的
string
以 "0x
"或 "0x
"(一个0,后面是小写或大写的X)开头,那么radix被假定为16,字符串的其余部分被当做十六进制数去解析。 - 如果输入的
string
以 "0
"(0)开头,radix
被假定为8
(八进制)或10
(十进制)。具体选择哪一个radix取决于实现。ECMAScript 5 澄清了应该使用 10 (十进制),但不是所有的浏览器都支持。因此,在使用parseInt
时,一定要指定一个 radix。 - 如果输入的
string
以任何其他值开头,radix
是10
(十进制)
- 如果输入的
- 如果第一个字符不能转换为数字,
parseInt
会返回NaN
。
BigInt
。警告: parseInt
将 BigInt
转换为Number
,并在这个过程中失去了精度。这是因为拖尾的非数字值,包括 "n",会被丢弃。
(5)Number.prototype.toExponential()
toExponential(digits)
方法以指数表示法返回该数值字符串表示形式
参数:
- digits:可选,一个整数,用来指定小数点后有几位数字。默认情况下用尽可能多的位数来显示数字。
返回值:
- 一个用幂的形式 (科学记数法) 来表示
Number
对象的字符串。小数点后以fractionDigits 提供的值来四舍五入。如果fractionDigits
参数被忽略了,小数点后的将尽可能用最多的位数来表示该数值。 - 对数值字面量使用
toExponential()
方法,且该数值没有小数点和指数时,应该在该数值与该方法之间隔开一个空格,以避免点号被解释为一个小数点。也可以使用两个点号调用该方法。 - 如果一个数值的小数位数多余
fractionDigits
参数所提供的,则该数值将会在fractionDigits
指定的小数位数处四舍五入。可以查看toFixed()
方法描述中关于四舍五入的讨论,同样应用于toExponential()
方法。
异常:
RangeError:如果 fractionDigits 太小或太大将会抛出该错误。介于 0 和 20(包括20)之间的值不会引起
RangeError
。 执行环境也可以支持更大或更小范围。- TypeError:如果该方法在一个非数值类型对象上调用。
1 var numObj = 77.1234; 2 3 alert("numObj.toExponential() is " + numObj.toExponential()); //输出 7.71234e+1 4 5 alert("numObj.toExponential(4) is " + numObj.toExponential(4)); //输出 7.7123e+1 6 7 alert("numObj.toExponential(2) is " + numObj.toExponential(2)); //输出 7.71e+1 8 9 alert("77.1234.toExponential() is " + 77.1234.toExponential()); //输出 7.71234e+1 10 11 alert("77 .toExponential() is " + 77 .toExponential()); //输出 7.7e+1
(6)Number.prototype.toFixed()
toFixed(digits)
方法使用定点表示法来格式化一个数值。
参数:
- 小数点后数字的个数;介于 0 到 20 (包括)之间,实现环境可能支持更大范围。如果忽略该参数,则默认为 0。
返回值:
- 使用定点表示法表示给定数字的字符串。
注意:浮点数不能精确地用二进制表示所有小数。这可能会导致意外的结果,例如 0.1 + 0.2 === 0.3
返回 false
.
1 var numObj = 12345.6789; 2 3 numObj.toFixed(); // 返回 "12346":进行四舍六入五看情况,不包括小数部分 4 numObj.toFixed(1); // 返回 "12345.7":进行四舍六入五看情况 5 6 numObj.toFixed(6); // 返回 "12345.678900":用0填充 7 8 (1.23e+20).toFixed(2); // 返回 "123000000000000000000.00" 9 10 (1.23e-10).toFixed(2); // 返回 "0.00" 11 12 2.34.toFixed(1); // 返回 "2.3" 13 14 2.35.toFixed(1) // 返回 '2.4'. Note it rounds up 15 16 2.55.toFixed(1) // 返回 '2.5'. Note it rounds down - see warning above 17 18 -2.34.toFixed(1); // 返回 -2.3 (由于操作符优先级,负数不会返回字符串) 19 20 (-2.34).toFixed(1); // 返回 "-2.3" (若用括号提高优先级,则返回字符串)
(7)Number.prototype.toPrecision()
toPrecision()
方法以指定的精度返回该数值对象的字符串表示。
(8)Number.prototype.toString()
toString()
方法返回指定 Number
对象的字符串表示形式。
(9)Number.prototype.valueOf()
valueOf()
方法返回一个被 Number
对象包装的原始值。