十进制转二进制分为整数转二进制,和小数转二进制,一个数的整数部分和小数部分分开转再合到一起
整数转二进制
- 采用"除2取余,逆序排列"法
- 直到整数部分为零
- 1/2=0余1
例如 十进制的10转成二进制
10/2=5-余0
5/2=2--余1
2/2=1--余0
0/2=0--余1
从下往上看就是1010
小数转二进制
- 采用"乘2取整,顺序排列"法
- 直到积中的小数部分为零,此时0或1为二进制的最后一位,或者达到所要求的精度为止
假如 十进制的0.25转为二进制
0.25*2=0.5--整数值-0
0.5*2=1.0---整数值-1
从上往下看就是0.01
计算机底层存储都是基于二进制的,需要事先由十进制转换为二进制存储与运算,这整个转换过程中,类似于 0.1、0.2 这样的数是无穷尽的,无法用二进制数精确表示。JavaScript 采用的是 IEEE 754 双精确度标准,能够有效存储的位数为 52 位,所以就需要做舍入操作,这无可避免的会引起精度丢失。另外我们在 0.1 与 0.2 相加做对阶、求和、舍入过程中也会产生精度的丢失。