這個問題真的很難處理很難處理!然而網路上也是Google 很久才有的資料。
好吧進入正題。
首先,大家應該都知道,進位算法就是取餘數,但是小數的算法卻是 乘 起來,取整。
Example:
*****0.625 轉 2進位制:
第1式:0.625 × 2 = 1.250 =======>1
第2式:0.250 × 2 = 0.500 =======>0
第3式:0.500 × 2 = 1.000 =======>1
答案是:101
*****0.125 轉 2進位制:
第1式:0.125 × 2 = 0.250 =======>0
第2式:0.250 × 2 = 0.500 =======>0
第3式:0.500 × 2 = 1.000 =======>1
答案是:001
*****0.3 轉 2進位制:
第1式:0.3 × 2 = 0.6 =======>0
第2式:0.6 × 2 = 1.2 =======>1
第3式:0.2 × 2 = 0.4 =======>0
第4式:0.4 × 2 = 0.8 =======>0
第5式:0.8 × 2 = 1.6 =======>1
第5式 偵測到重複字串,造成循環無限小數。
由第2式開始循環字串。
答案是:01001
這樣大概就夠了,這是 10 轉 2 的方式,其他就以此類推。
但是網路上很少有提到!轉回來。只有轉過去。
123.45 = 1 × 102 + 2 × 101 + 3 × 100 + 4 × 10-1 + 5 × 10-2
所以,小數點後,如果是2進位,則是2-1、2-2、2-3 ‧‧‧‧‧‧‧以此類推。
真是難處理,尤其是無限小數的轉換。
所以,我原本也想做一個很棒的程式,但看樣子,我也許得放棄了。
因為有夠麻煩!我目前的程式因為 算的精度太高了,所以無法處理無限小數的問題。
我大概 應該還會繼續完成的樣子,只是需要時間思考。