数值扩展
00) Number.EPSILON
是 javascript 表示的最小精度
console.log(Number.EPSILON); // 2.220446049250313e-16
javascript 是浮点运算,会出现经典的 0.1 + 0.2 的问题;
我们写个函数 equal ,来判断两个值之间的差少于 Number.EPSILON 就认为他俩相等;
function equal(a,b){
if(Math.abs(a-b) < Number.EPSILON){
return true;
}else{
return false;
}
}
console.log( 0.1 + 0.2 === 0.3);
console.log( equal(0.1 + 0.2,0.3));
01) 二进制和八进制
ES6 引入了二进制和八进制表示数值;
let b = 0b1010; // 10 二进制
let o = 0o777; // 517 八进制
let x = 0xff; // 255 十六进制
02)Number.isFinite
检测一个数值是否为有限数;
console.log(Number.isFinite(100)); // true
console.log(Number.isFinite(100/0)); // false
console.log(Number.isFinite(Infinity)); // false
03) Number.isNaN
检测一个数值是否为 NaN;
和全局函数 isNaN() 相比,Number.isNaN() 不会自行将参数转换成数字,只有在参数是值为 NaN 的数字时,才会返回 true。
console.log(Number.isNaN(NaN)); // true
console.log(Number.isNaN(Number.NaN)); // true
console.log(Number.isNaN(0 / 0) ); // true
console.log(Number.isNaN(123)); // false
console.log(Number.isNaN(null)); // false
console.log(Number.isNaN(undefined)); // false
console.log(Number.isNaN("true")); // false
04) Number.parseInt Number.parseFloat
字符串转整数
这个方法和全局的 parseInt() 函数具有一样的函数功能:
console.log(Number.parseInt('3223Love')); // 3223
console.log(Number.parseInt('3.14159神奇')); // 3
05)Number.isInteger
判断一个数是否为整数
console.log(Number.isInteger(5)); // true
console.log(Number.isInteger(5.5)); // false
06)Math.trunc
将数字的小数部分抹掉
console.log(Number.trunc(3.5)); // 3
07)Math.sign
判断一个数到底为正数、负数还是零;
正数返回 1;
零返回 0 ;
负数返回 -1;
console.log(Math.sign(3.5)); // 1
console.log(Math.sign(0)); // 0
console.log(Math.sign(-200)); // -1