為什麼計算機中的小數字無法精確

2021-09-07 15:22:14 字數 828 閱讀 9154

想搞清這個問題,首先要明白十進位制和二進位制的轉換關係

以數字43.21轉換為二進位制進行說明

43/2=21...1

21/2=10...1

10/2=5...0

5/2=2...1

2/2=1...0

1/2=0...1

整數部分:101011

總結:不斷除以基數(2進製的基數是2),倒序取餘數,110101

0.212=0.42 ...0

0.422=0.84 ...0

0.842=1.68 ...1

0.682=1.36 ...1

0.36*2=0.72 ...0

...(一直計算到0.72為0.00停止,就會得到精確數,這也是為什麼計算機在小數計算上出現誤差的原因)

小數部分:0.00110

總結: 不斷乘以基數,正序取整數部分進製,00110

結果:(43.21)10 約等於 (101011.0011)2

二進位制轉十進位制

整數部分:

101011=122222+0+1222+0+12+1=43

小數部分:

0.0011=0(1/2)+0(1/4)+1(1/8)+1*(1/16)=0.1875

結果:43.1875 (101011.0011)2 約等於 (43.21)10

總結:整數字從右至左,依次乘以2的0次方,2的一次方。小數字從左至右,以此乘以2的-1次方,2的-2次方

一圖勝千言,最快的二進位制轉十進位制方法

為什麼計算機中的小數字無法精確

想搞清這個問題,首先要明白十進位制和二進位制的轉換關係 以數字43.21轉換為二進位制進行說明 43 2 21.1 21 2 10.1 10 2 5.0 5 2 2.1 2 2 1.0 1 2 0.1 整數部分 101011 總結 不斷除以基數 2進製的基數是2 倒序取餘數,110101 0.212...

小數儲存到計算機中為什麼會有精度損失

大家應該都知道小數轉二進位制的方法吧,乘2取整,得到積,將積的整數部分取出,再用餘下的小數部分乘2,又得到乙個積,再將積的整數部分取出,如此進行,直到積中的小數為0,或者達到所要求的精度為止。可以看到每次乘2都會取出乙個整數,將這些整數順序排列就能得到小數的二進位制表示。上面的例子乘2最終可以會停止...

小數在計算機中的表示

執行如下 得到結果 你猜是多少呢?嗯你沒有看錯得到的答案是57.所以為什麼會出現這種情況呢?首先需要 的是0.58這個數字是如何在計算機中儲存的。我們一般用下面格式表示浮點數。sp m 其中s是符號位,p是階碼,m是尾數。單精度浮點數是32位,雙精度浮點數是64位。s pm表示公式 偏移量1823 ...