浮點數7位有效數字。
雙精度數16位有效數字。
浮點數取值範圍:
負數取值範圍為 -3.E+38 到 -1.E-45,正數取值範圍為 1.E-45 到 3.E+38。
雙精度數取值範圍:
負值取值範圍-1.E+308 到 -4.E-324,正值取值範圍為 4.E-324 到 1.E+308。
C/C++中浮點數的表示遵循IEEE 754標準。
一個浮點數由三部分組成:符號位S、指數部分E(階碼)以及尾數部分M(如下)。
Floating
S--------E-------M
1位-----8位-----23位
Double
1位-----11位----52位
十進位制數的換算計算公式為(n^m表示n的m次冪,B表示前面的數字是二進位制):
S * 2^(E-127) * (1.M)B
浮點數的精度取決於尾數部分。尾數部分的位數越多,能夠表示的有效數字越多。
單精度數的尾數用23位儲存,加上預設的小數點前的1位1,2^(23+1) = 。因為 10^7 < < 10^8,所以說單精度浮點數的有效位數是7位。
雙精度的尾數用52位儲存,2^(52+1) = ,10^16 < < 10^17,所以雙精度的有效位數是16位。
另外:
如果你在PI值的有效位後增加數字的話,結果是不會變化的,由於PI值是以常數方式賦值,可以在常數後面加個"f",如PI = 3.f;否則編譯器會先把常數當作double型別,然後再截斷後面的值變為浮點值,這樣的話,就有可能PI的值會有不同,造成你看到的現象。
浮點數7位有效數字。
雙精度數16位有效數字。
浮點數取值範圍:
負數取值範圍為 -3.E+38 到 -1.E-45,正數取值範圍為 1.E-45 到 3.E+38。
雙精度數取值範圍:
負值取值範圍-1.E+308 到 -4.E-324,正值取值範圍為 4.E-324 到 1.E+308。
C/C++中浮點數的表示遵循IEEE 754標準。
一個浮點數由三部分組成:符號位S、指數部分E(階碼)以及尾數部分M(如下)。
Floating
S--------E-------M
1位-----8位-----23位
Double
S--------E-------M
1位-----11位----52位
十進位制數的換算計算公式為(n^m表示n的m次冪,B表示前面的數字是二進位制):
S * 2^(E-127) * (1.M)B
浮點數的精度取決於尾數部分。尾數部分的位數越多,能夠表示的有效數字越多。
單精度數的尾數用23位儲存,加上預設的小數點前的1位1,2^(23+1) = 。因為 10^7 < < 10^8,所以說單精度浮點數的有效位數是7位。
雙精度的尾數用52位儲存,2^(52+1) = ,10^16 < < 10^17,所以雙精度的有效位數是16位。
另外:
如果你在PI值的有效位後增加數字的話,結果是不會變化的,由於PI值是以常數方式賦值,可以在常數後面加個"f",如PI = 3.f;否則編譯器會先把常數當作double型別,然後再截斷後面的值變為浮點值,這樣的話,就有可能PI的值會有不同,造成你看到的現象。