符号位代表正负,0为正,1为负,
阶码代表以2为底的指数,用来表示二进制的位移,稍后详解。
尾数代表二进制数值
以+276存储到32bit形式为例
1. 276的二进制为100010100,可以通过除二取余法得到。
2.这时我们将100010100写成小数形式,1.00010100,由于这种形式的第一位总是1,为了节省空间,我们将只存储剩下的尾数。所以23bit实际上还要加上默认省略的数,总共24位,不够的数位默认补0. 100010100表示为1.00010100*2^8, 符号位存储0,阶码处不是直接存储8,而是将8加上偏置值127,得到135(二进制10000111),得到的存储形式为:
0 10000111 00010100000000000000000
0符号位 10000111阶码 135 = 8+127 00010100000000000000000尾数去掉默认的1补上15个0
64bit如上,偏移值为1023
JS的0.1+0.2=0.30000000000000004问题就是因为计算机内部的二进制存储是有限位,尾数和阶数都是有限的。
Number.MAX_SAFE_INTEGER
代表最大安全整数,这个数比MAX_VALUE要小。
Number.MAX_VALUE
最大安全数。0 11111110 11111111111111111111111.全1是NAN。
Number.EPSILON
是指1和比1大的小数的最小差值。用来解决0.1+0.2!=0.3的问题