在 JavaScript 中采用的是 64 位双精度存储的。
符号位S:第1位是正负符号位,0表示是正值,1代表是负值。 63位为指数位。
指数位E:中间的11位存储指数,用来表示次方数。52-62位。
尾数位M:最后的52位尾数,超出的部分自动进一舍零。0-51位。
console.log(Number.MAX_VALUE)//1.7976931348623157e+308
console.log(Number.MAX_SAFE_INTEGER)//9007199254740991
console.log(Number.MIN_VALUE)//5e-324
console.log(Number.MIN_SAFE_INTEGER)//-9007199254740991
最大的整数是2^53-1
0.1+0.2的问题
1.可以转化成十进制再相加,在除以10
console.log(0.1*10+0.2*10===0.3*10) //true
2.tofixed
console.log((0.1+0.2).toFixed(1)===0.3)//false
console.log((0.1+0.2).toFixed(1)==0.3)//true
3.做减法小于Number.EPSILON(IE需要自己求:2^-52)
console.log(Math.abs((0.1+0.2)-0.3)<Number.EPSILON)//true