為什麼浮點運算中二進位制和十進位制轉換會產生不完全一致的浮點小數?

時間 2021-06-09 22:53:02

1樓:lowxiong

先舉乙個簡單的例子:0.3

0.3=3/10=(二進位制)11/1010=0.010011001100110011……,除不盡。

所以小數(有理數)的本質是分數,而分數涉及到除法,在十進位制狀態下做除法的結果可能不無限迴圈,並不表示在二進位制下做相同的兩個數的除法不產生無限迴圈。

從十進位制轉換二進位制的方法上也可以理解:十進位制轉換為二進位制,整數部分不斷除2取餘數,直到整數部分為0就轉換完畢;小數部分不斷乘2取小數點前個位數,直到小數部分為0或超過尾數字數(浮點數表達的精度)則轉換完畢。仍以0.

3為例:

顯然0.3轉換為二進位制將陷入無限迴圈,最終將超過浮點數的尾數字數(即超過浮點數的最大精度),只好將表示不了的捨棄,如果反過來將這個精度不夠的浮點數轉換為十進位制就和原十進位制不一樣了,只有0.299999,不一致就這樣產生了。

2樓:

二進位制的0.abcde=a*1/2+b*1/4+c*1/8+d*1/16+e*1/32

不能表示的實數太多了,只能取近似

對於0.1手動取二進位制,

1/10-1/2^4=3/80 -->二進位制0.0001x3/80-1/2^5=1/160-->二進位制0.00011x1/160-1/2^8=3/1280-->二進位制0.

00011001x

在有限步之內,總會有乙個與2相質的5不能被「湊」出來。

任何有限位X進製的小數,被Y進製的小數在有限位表示出來的充要條件,應該是X的所有約數構成的集合是Y的所有約數構成的集合的子集

十進位制轉換成二進位制及二進位制轉換成十進位制是如何轉換的

年年有魚 進製轉換方法如下 1 二進位制 十進位制 例 1101 2 13 10 1101 2 1 2 3 1 2 2 1 2 0 8 4 1 12 1 132 十進位制 二進位制 例 14.625 1110.101 2整數部分 14 10 1110 2 14 2 0 7 2 1 3 2 1 1 2...

二進位制 三進製或十進位制?

李衛 二進位制常用的數字是0和1,三進製常用的數字是0 1 2,十進位制常用的數字是0 1 2 3 4 5 6 7 8 9,在這裡還要介紹新的進製,分別是12進製和16進製制,12進製是指常用的羅馬數字的,一 二 三 四 五 六 七 八 九 十 十 一 十二,而16進製制是指的,0 1 2 3 4 ...

不同數制 如二進位制 八進位制 十進位制 十六進製制 彼此之間是怎麼相互轉換的

二進位制數 10011 用數軸表示可以寫成這樣 2 7 2 6 2 5 2 4 2 3 2 2 2 1 2 01 0 0 1 1換成10進製可以這樣算二進位制數 10011 等於十制數 1 2 4 0 2 3 0 2 2 1 2 1 1 2 0 16 0 0 2 1 19十進位制數 19 轉換成二進...