数字的扩展
数字的扩展
-
ES6明确规定八进制要用
0o
前缀;可以使用Number(n)
将二进制和八进制转化为十进制; -
Number.isFinite()
Number.isNaN()
分别用于检测一个数是否有限和是否是数字 -
Number.isInteger()
判断一个数是否为整数 -
Number.EPSILON
表示极小常量
引入一个这么小的量的目的,在于为浮点数计算,设置一个误差范围Number.EPSILON // 2.220446049250313e-16 Number.EPSILON.toFixed(20) // '0.00000000000000022204' function withinErrorMargin (left, right) { return Math.abs(left - right) < Number.EPSILON; } withinErrorMargin(0.1 + 0.2, 0.3) // true withinErrorMargin(0.2 + 0.2, 0.3) // false
-
安全整数
JavaScript能够准确表示的整数范围在-2^53
到2^53
之间(不含两个端点),超过这个范围,无法精确表示这个值。
ES6引入了Number.MAX_SAFE_INTEGER
和Number.MIN_SAFE_INTEGER
这两个常量,用来表示这个范围的上下限。
Number.isSafeInteger(num)
则是用来判断一个整数是否落在这个范围之内。 -
Math对象的扩展
Math.trunc(num)
用于去除一个数的小数部分,保留整数部分Math.sign(num)
用于判断一个数的正负或零Math.cbrt(num)
用于计算一个数的立方根Math.clz32(num)
JavaScript的整数使用32位二进制形式表示,Math.clz32方法返回一个数的32位无符号整数形式有多少个前导0Math.imul(num)
返回两个数以32位带符号整数形式相乘的结果,返回的也是一个32位的带符号整数Math.hypot(num)
返回所有参数的平方和的平方根
-
指数运算方法
**
2 ** 2 // 4 2 ** 3 // 8 let a = 1.5; a **= 2; // 等同于 a = a * a; let b = 4; b **= 3; // 等同于 b = b * b * b;
-
Integer数据类型 必须使用后缀n表示
-
二进制、八进制、十六进制的表示法,都要加上后缀
n
-
Interger 类型不能与 Number 类型进行混合运算
1n + 1 // 报错
原因:无论返回的是 Integer 或 Number,都会导致丢失信息。比如(2n**53n + 1n) + 0.5
这个表达式,如果返回Integer
类型,0.5
这个小数部分会丢失;如果返回Number
类型,会超过53
位精确数字,精度下降。
春天的雨,夏天的风,只为更好的自己和最爱的你!