二进制0B,八进制0O
//十进制 -> 二进制
const a=5 //101
console.log(a.toString(2)); //101
//二进制 ->十进制
const b=101
console.log(parseInt(5.5)); //5
console.log(parseInt(b,2)); //5
//es6 0B二进制
const c= 0B0101
console.log(c); //5
//es6 0O八进制
const d=0O777
console.log(d); //511
Number.isFinite(),Number.isNaN()
// 5/0 Infinity
//Number.isFinite 判断数值是不是有限的
console.log(Number.isFinite(5)) //true
console.log(Number.isFinite(0.5)) //true
console.log(Number.isFinite(Infinity)) //false
console.log(Number.isFinite('hi')) //false
console.log(Number.isFinite(true)) //false
//'a'/5 NaN not a number
//isNaN(5) => window.isNaN(5)
//Number.isNaN 判断数值是不是NaN
console.log(Number.isNaN(NaN)) //true
console.log(Number.isNaN(15)) //false
Number.parseInt(),Number.parseFloat()
//减少挂载在window上 使代码模块化
console.log(window.parseInt(5.5)) //5
console.log(window.parseFloat(5.5)) //5.5
console.log(Number.parseInt(5.5)) //5
console.log(Number.parseFloat(5.5)) //5.5
Number.isInteger()
//Number.isInteger 判断数值是不是整数
console.log(Number.isInteger(5)) //true
console.log(Number.isInteger(5.5)) //false
面试题 0.1+0.2===0.3?
//0.1+0.2不等于0.3
//精度缺失问题 存储的是近似值
//IEEE 754 双精度标准 存储数字二进制
console.log(0.1+0.2); //0.30000000000000004
console.log(0.1+0.2 ===0.3); //false
//存储35->00100011 转八进制
//存储0.375->0.011 转二进制
//0.1-> 0.000110011... 存储空间不够
console.log(0.1000000000000001); //0.1000000000000001
console.log(0.10000000000000001); //0.1
console.log(0.10000000000000001===0.1); //true
Math新增方法
//整数的最大值是2的53次方 最小值是-2的53次方
const max=Math.pow(2,53)
console.log(max); //9007199254740992
console.log(max+1); //9007199254740992
//MAX_SAFE_INTEGER 最大值
console.log(Number.MAX_SAFE_INTEGER);
//MAX_SAFE_INTEGER 最小值
console.log(Number.MIN_SAFE_INTEGER); //-9007199254740991
//Number.isSafeInteger 判断是不是一个安全的整数
console.log(Number.isSafeInteger(Number.MAX_SAFE_INTEGER)); //true
console.log(Number.isSafeInteger(Number.MAX_SAFE_INTEGER+1)); //false
//Math.trunc 去除一个数的小数部分,返回整数部分
console.log(Math.trunc(5.5)); //5
console.log(Math.trunc(-5.5)); //-5
console.log(Math.trunc(true)); //先转换成Number型 返回1
console.log(Math.trunc(false)); //0
console.log(Math.trunc(NaN)); //NaN
console.log(Math.trunc(undefined)); //NaN
console.log(Number.parseInt(5.5)); //5
console.log(Number.parseInt(-5.5)); //-5
console.log(Number.parseInt(true)); //NaN
//Math.sign 判断是正数1负数-1还是0
console.log(Math.sign(5)); //1
console.log(Math.sign(-5)); //-1
console.log(Math.sign(0)); //0
console.log(Math.sign(NaN)); //NaN
console.log(Math.sign(true)); //1
console.log(Math.sign(false)); //0
//Math.cbrt 求数值的立方根
console.log(Math.cbrt(8)); //2
console.log(Math.cbrt('hi')); //NaN
console.log(Math.cbrt(true)); //1
console.log(Math.cbrt(false)); //0