大家應該都知道小數轉二進位制的方法吧,乘2取整,得到積,將積的整數部分取出,再用餘下的小數部分乘2,又得到乙個積,再將積的整數部分取出,如此進行,直到積中的小數為0,或者達到所要求的精度為止。
可以看到每次乘2都會取出乙個整數,將這些整數順序排列就能得到小數的二進位制表示。上面的例子乘2最終可以會停止,但是如果換乙個數,例如0.56,我們再來看一下。
如果我們一直乘2下去,會得到無限個整數的序列。但是,計算機中不可能提供無限個bit位去儲存它們,因而造成了精度損失。但是又為了盡可能保持資料的精度,提供了兩種資料型別。float(單精度)和double(雙精度),我們需要根據需求去選擇浮點數的型別。
計算機中小數的儲存
我們在最初學習c語言的時候,學習資料型別的時候接觸到了浮點數,知道了它被用來儲存小數,但是為什麼在計算機中小數要稱為浮點數呢?在c語言中文網上,我知道了資料的儲存分為定點數和浮點數,它們的命名方式也取決於它們儲存資料的方式 c語言小數儲存的方法有兩種 定點數和浮點數 定點數 顧名思義,定點數就是小數...
為什麼計算機中的小數字無法精確
想搞清這個問題,首先要明白十進位制和二進位制的轉換關係 以數字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...
為什麼計算機中的小數字無法精確
想搞清這個問題,首先要明白十進位制和二進位制的轉換關係 以數字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...