二进制计算规律
这种方法叫做“乘2取整法” 转换0.1为二进制:
- 第一次操作:0.1×2=0.20.1×2=0.2,整数部分为0,所以第一位是0。
- 第二次操作:0.2×2=0.40.2×2=0.4,整数部分为0,所以第二位也是0。
- 第三次操作:0.4×2=0.80.4×2=0.8,整数部分为0,第三位也是0。
- 第四次操作:0.8×2=1.60.8×2=1.6,整数部分为1,第四位是1,同时留下0.6继续操作。
- 第五次操作:0.6×2=1.20.6×2=1.2,整数部分为1,第五位是1,剩下0.2。
- 之后:这个过程会继续,0.2乘以2得到0.4,接下来又是0.8,然后1.6,每次都会产生一个循环的模式,即
0.0001 1001 1001 1001...。
IEEE 754
- js采取了其中的64位双精度,由于小数,转二进制有无限循环位,而64位又由这个 1位符号位,11 位指数位,52 位的有效位,无法容纳无限循环的小数。
- 怎么解决,通过这个parseFloat(a.toFixed(4)) tofixed是为一个字符串,所以通过parsefloat转为数字。
- 其实从这里看出,其js最大整数的范围将是这个,-2^53 --- 2 ^53 ,从这个角度来讲不适合大数运算,引出了Big int 就是对于超出限制的大数,也可以正常存储。