可能重複:
How do I convert from a decimal number to IEEE 754 single-precision floating-point format?如何計算的21.36二進制數與誤差小於(0.01)
如何計算的21.36二進制數少於一個錯誤(0.01 )
我已經轉換21到二進制10101和36到二進制100100,但現在我將如何繼續,請幫助一些。
可能重複:
How do I convert from a decimal number to IEEE 754 single-precision floating-point format?如何計算的21.36二進制數與誤差小於(0.01)
如何計算的21.36二進制數少於一個錯誤(0.01 )
我已經轉換21到二進制10101和36到二進制100100,但現在我將如何繼續,請幫助一些。
小數部分不應該轉換爲數字本身,而應該作爲分數轉換。將36轉換爲二進制不同於將0.36轉換爲二進制。
將分數轉換爲二進制的工作原理相同,但不是使用1,2,4,8等,而是使用1/2,1/4,1/8等。
爲了表示0.36:
0 times 1/2 (0.5)
1 times 1/4 (0.25), leaves 0.11
0 times 1/8 (0.125)
1 times 1/16 (0.0625), leaves 0.0475
1 times 1/32 (0.03125), leaves 0.01625
1 times 1/64 (0.015625), leaves 0.000625
這需要你低於0.01,所以一些足夠接近21.36的完整bianry表示爲:
10101.010111
十進制這個數字的確切值是21.359375。
在這種情況下停止在1/64工作,但不是一般情況。如果對於某些x來說,從正在進行的殘差中x減去2到1/2 ** p的冪,那麼當前殘差可能幾乎爲1/2 ** p。例如,對於1/64,殘差可能是1/128 + 1/256 + 1/512 + ...,其可以是1/64以下的任何數字。所以殘留量可能會超過0.01。 –
@EricPostpischil:不要停在一個特定的位,當殘留足夠小時停止。在知道實際殘留物之前,在潛在殘留物足夠小之前計算更多的零位毫無意義。 – Guffa
我的觀點是答案應該明確說明停止標準。正如目前所寫,它沒有;指示代詞「that」沒有明確的先行詞,並且不清楚。我建議你編輯它。 –
投票重新開放,因爲IEEE 754格式完全不是這個問題的答案。 – Guffa
提供的可疑重複鏈接與我的問題無關。如果一個人有同樣的問題,我已經發布在這裏,並參觀該參考鏈接,他將無法從那裏得到任何指導或幫助,所以我請求現場提出這個問題。 已投票結束的會員,請解釋我將如何從您提到的重複鏈接中獲得我的答案並解釋過程。 – John
這個問題特別要求一些東西(意思是'分數二進制'),它可以作爲對IEEE754問題的答案的一部分來回答,但是現在還沒有。我也覺得在沒有尾數,隱藏位,反常規等複雜情況下回答這個問題是有道理的...... – greggo