浮點數在計算機中也是用二進制表示的,只不過有一定規則(公式)
第一段佔 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