十進制轉二進制分為整數轉二進制,和小數轉二進制,一個數的整數部分和小數部分分開轉再合到一起
整數轉二進制
- 采用"除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 相加做對階、求和、舍入過程中也會產生精度的丟失。
