网站免费建站系统,linux重装wordpress,江苏两学一做网站,长沙外贸网站1. 二进制和八进制的表示法
二进制和八进制的前缀分别为0b(或0B)和0o(或0O)表示
在ES5的严格模式下#xff0c;八进制不再允许使用前缀0表示
如果要将0b和0x前缀的字符串数值转为十进制#xff0c;要使用Number方法
Number(0b111); // 7
Number(0o10); // 82. Number.isF…1. 二进制和八进制的表示法
二进制和八进制的前缀分别为0b(或0B)和0o(或0O)表示
在ES5的严格模式下八进制不再允许使用前缀0表示
如果要将0b和0x前缀的字符串数值转为十进制要使用Number方法
Number(0b111); // 7
Number(0o10); // 82. Number.isFinite()、Number.isNaN()
Number.isFinite()用来检测一个数值是否是有限的(finite)。 Number.isFinite(15); // true
Number.isFinite(NaN); // false
Number.isFinite(Infinity); // false
Number.isFinite(foo); // false
Number.isFinite(true); // false
Number.isNaN() 用来检测一个值是否为NaN Number.isNaN(NaN); // true
Number.isNaN(14); // false
Number.isNaN(str); // false
Number.isNaN(true); // false
Number.isNaN(9/NaN); // true这两个方法与全局的isFinite()和isNaN()相比之前的会先调用Number()将非数值转为数 值然后再进行判断这两个方法会直接判断只对数值有效其他非数值一律为false。
3. Number.parseInt()、Number.parseFloat()
只是将全局的方法移到了Number上
4. Number.isInteger()
用来判断一个值是否为整数在js中整数和浮点数是同样的存储方法所以3和3.0视为同一个数。
Number.isInteger(25); // true
Number.isInteger(25.0); // true
Number.isInteger(25.1); // false
Number.isInteger(25); // false
Number.isInteger(true); // false5. Number.EPSILON
规定一个极小的常量目的是为了浮点数计算设置一个误差范围因为浮点数计算是不准确,只要是误差小于这个常量默认就是得到了一个正确结果。
说白了就是一个可以接受的误差范围。
Number.EPSILON 2.220446049250313e¯16
0.1 0.2 0.300000000000000046. 安全整数和Number.isSafeInteger()
因为在js中能够准确表示的整数范围是-2^53到2^53 之间(不包含两个端点)超过这个范围就无法精确表示所以可以使用Number.isSafeInteger()判断某个值是否是安全的。
Number.MAX_SAFE_INTEGER 代表js能准准确表示的最大值。 Number.MIN_SAFE_INTEGER 代表js能准准确表示的最小值。
Number.isSafeInteger(9) // true
Number.isSafeInteger(a) // false
Number.isSafeInteger(true) // false
Number.isSafeInteger(NaN) // false
Number.isSafeInteger(Infinity) // false
Number.isSafeInteger(-Infinity) // falseisSafeInteger函数是如何实现的
Number.isSafeInteger function (n) {return (typeof n number Math.round(n) n Number.MIN_SAFE_INTEGER n n Number.MAX_SAFE_INIEGER);
}在使用Number.isSafeInteger验证时若有运算不仅要验证结果也要验证参与运算的每个值否则会出现问题。 Number.isSafeInteger(9007199254740993) // false
Number.isSafeInteger(900) // true
Number.isSafeInteger(9007199254740993 - 900) // true
9007199254740993 - 900 9007199254740002可以看出9007199254740993不是安全整数但是计算结果却是安全的。这是因为数据超出了精度范围就会以最大值存储。
7. Math对象的扩展
1. Math.trunc()
用来去除一个数的小数部分返回整数部分。
Math.trunc(4.1); // 4
Math.trunc(4.9); // 4
Math.trunc(-4.1); // 4
Math.trunc(-4.0); // 4
Math.trunc(-0.12); // 0对于非数值会先使用Number转化会向下取整。
Math.trunc(123.23); // 123对于空值和无法截取的整数返回NaN
Math.trunc(NaN); // NaN
Math.trunc(foo); // NaN
Math.trunc(); // NaN对于不支持该方法可以用此代码代替
Math.trunc Math.trunc || function(x) {return x 0 ? Math.ceill(x) : Math.floor(x);
}2. Math.sign()
用来判断一个数到底是正数、负数还是零对于非数值会先将其转化为数值。
参数为正数返回 1参数为负数返回-1参数0返回0参数-0返回0其他值返回NaN
对于不支持该方法可以用此代码代替
Math.sign Math.sign || function(x) {x x; // convert to a numberif (x 0 || isNaN(x)) {return x;}return x 0 ? 1 : -1;
}3. Math.cbrt()
用来计算一个数的立方根
Math.cbrt(-1); // -1
Math.cbrt(1); // 1
Math.cbrt(8); // 2对于非数值会先使用Number进行转换
对于不支持该方法可以用此代码代替
Math.cbrt Math.cbrt || function (x) {var y Math.pow(Math.abs(x), 1/3);return x 0 ? -y : y;
}4. Math.fround()
返回一个数的单精度浮点数形式
Math.fround(0); // 0
Math.fround(1); // 1
Math.fround(1.337); // 1.3370000123977661
Math.fround(NaN); // NaN对于不支持该方法可以用此代码代替
Math.fround Math.fround || function(x) {return new Float32Array([x])[0];
}