浮點數如何表示,以及爲什麼會出現精度問題

浮點數在計算機中也是用二進制表示的,只不過有一定規則(公式)

 

 

 第一段佔 1bit,表示符號位。代稱爲 S(sign)。

第二段佔 8bits,表示指數。代稱爲 E(Exponent)。

第三段佔 23bits,表示尾數。代稱爲 M(Mantissa)。

 

 

 

對 3.14 這個小數進行表示
是正數。所以,S = 0
2^1 < 3.14 <2^2。所以,n=1, n+127 = 128。所以,E=128。
(3.14 - 2) / (4 - 2) = 0.57, 而 0.57*2^{23} = 4781506.56,四捨五入,得到 M = 4781507。因爲有四捨五入,所以,產生了浮點數據的精度問題。
至此,根據小數3.14以及上面的公式算出了S E M

把 S、E、M 轉成二進制,放入二進制位的三段得到 3.14 的二進制表示

 

 

 爲什麼會產生精度問題?

產生精度問題,其實是將二進制的3段變量重新帶入公式,算出的結果與原值不同的問題

問題就出在,第一次計算M時就有了精度問題4781506.56四捨五入4781507

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章