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