斷行
0.875
× 2
 ̄ ̄ ̄ ̄
1.750 → 取小數前的 1 →①
0.750 ← 前一計算的乘積只取小數部份
× 2
 ̄ ̄ ̄ ̄
1.500 → 取小數前的 1 → ②
0.500 ← 前一計算的乘積只取小數部份
× 2
 ̄ ̄ ̄ ̄
1.000 → 取小數前的 1 → ③
依①②③的順序,十進位 0.875 為二進位 0.111
其他情況給你參考
0.300
× 2
 ̄ ̄ ̄ ̄
0.600 → 取小數前的 0 → ①
0.600
× 2
 ̄ ̄ ̄ ̄
1.200 → 取小數前的 1 → ②
0.200
× 2
 ̄ ̄ ̄ ̄
0.400 → 取小數前的 0 → ③
0.400
× 2
 ̄ ̄ ̄ ̄
0.800 → 取小數前的 0 → ④
0.800
× 2
 ̄ ̄ ̄ ̄
1.600 → 取小數前的 1 → ⑤ → 從這裡可以發現又回到①的情況
因此 十進位的 0.3 是"乘"不進二進位的,會變成 0.010011001循環浮點數
原帖由 safestation 於 08-1-12 03:08 發表
C++中可以用itoa來偷懶XD
用法這裡
http://www.cplusplus.com/reference/clibrary/cstdlib/itoa.html
歡迎光臨 鐵之狂傲 (https://gamez.com.tw/) |