為何float有效位數為7位?


 

 

為何float有效位數為7位?

首先我們應該明確一點:C語言中,%f表示保留7位有效數字7位有效數字: 是指 整數部分 和小數部分一共7位

 

單精度數的尾數用23位存儲,加上默認的小數點前的1位1,2^(23+1) = 16777216。

因為 10^7 < 16777216 < 10^8,所以說單精度浮點數的有效位數是7位。 

雙精度的尾數用52位存儲,2^(52+1) = 9007199254740992,

因為10^16 < 9007199254740992 < 10^17,所以雙精度的有效位數是16位。

 

從運行結果上可以看出輸出的結果中前七位是和原數據保持一致,從第八位開始就亂碼了,有些人就會問了,這只是整數部分,那小數部分呢?不要着急,看下面。

結果中48965.94是和原數據的前七位是保持一致的,這樣就可以證明上面所說的:C語言中,%f表示保留7位有效數字7位有效數字: 是指 整數部分 和小數部分一共7位,有些初學者還會把小數點也算進去,其實這是不對的。


2.在默認情況下以%f格式輸出的情況下會輸出6位小數,但並不能保證這6位小數有效,即:是否有效還要看整數位和小數位加在一起是否超過7位。


3.另外我們要知道:有效數字的位數與指定輸出的小數位數(%.7f)是兩碼事。%.mf 格式是自己設置需要輸出幾位小數。

如:

and


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM