c語言中double的范圍
A. C中的float和double的有效數字和精度各是多少
float和double是有IEEE標準的,不是C語言定的,其它語言也一樣。
double型90%的情況下有效位是16位的10進制數據是對的。來一段lua程序:
local b= 9007199254740991
print("b="..string.format("%d", b))
for i=1,10 do
print("i="..i..",b+i="..string.format("%d", b+i))--列印的全是偶數
end
for i=1,10 do
print("i="..i..",b-i="..string.format("%d", b-i))--列印正確
end
由此可見,大於9007199254740991(2進制52位最大的數),從2^53開始誤差就大於1。
B. C語言中的double是最多多少位
雙精度實數,佔用位元組8。
有效數字15~16(因為二進制轉十進制問題)。
數值范圍-1.7*10負308次方~1.7*10的308次方。
當有效數字全部是整數時,即整數有15~16位。
C語言中,輸出double類型(雙精度實型)以及float類型(單精度實型)時,默認輸出6位小數(不足六位以 0 補齊,超過六位按四捨五入截斷)。double a = 1;printf("%lf ", a);輸出會是:1.000000
比如計算平均分,一到兩位小數就足夠了。可是有時六位又不夠,需要更多位小數,比如計算高精度平方根。這時可以用printf的格式控制。如果要輸出n位小數,那麼可以用%.nlf的格式。其中n為數字。
所在函數庫為【ctype.h】
int isalpha(int ch) 若ch是字母('A'-'Z','a'-'z')返回非0值,否則返回0
int isalnum(int ch) 若ch是字母('A'-'Z','a'-'z')或數字('0'-'9')
返回非0值,否則返回0
intisascii(int ch) 若ch是字元(ASCII碼中的0-127)返回非0值,否則返回0
intiscntrl(int ch) 若ch是作廢字元(0x7F)或普通控制字元(0x00-0x1F)
以上內容參考:網路-C語言函數
C. c璇璦涓鍙岀簿搴︽誕鐐規暟錛堝嵆double綾誨瀷鏁版嵁錛夌殑鍙栧艱寖鍥
鍙岀簿搴︽誕鐐規暟鍦ㄨ$畻鏈轟腑鐨勫瓨鍌ㄦ柟寮忎負錛
涓浣嶇﹀彿浣 s
11浣嶆寚鏁頒綅 E(縐葷爜琛ㄧず錛岃寖鍥翠負錛歟=-1024鍒1023錛
52浣嶅皬鏁頒綅 f
鍏辮64浣嶏紝8涓瀛楄妭
鎵琛ㄧず鐨勮勬牸鏁頒負錛1.f * 2^e 錛1.f 綰︾瓑浜2 (1.1111111111111111111...=2 )
鑳借〃紺虹殑鏈灝忔暟綰︾瓑浜 -2*2^1023=2^1024
鑳借〃紺虹殑鏈澶ц礋鏁扮害絳変簬 -2*2^-1024=-2^-1023
鑳借〃紺虹殑鏈澶ф暟綰︾瓑浜 2*2^1023=2^1024
鑳借〃紺虹殑鏈灝忔f暟綰︾瓑浜 2*2^-1024=2^-1023
褰撶劧錛屽彟鏈夎勫畾鍏0鏃朵唬琛0
鎵浠ワ細
璐熷煎彇鍊艱寖鍥-1.79769313486231570E+308 鍒 -4.94065645841246544E-324錛
姝e煎彇鍊艱寖鍥翠負 4.94065645841246544E-324 鍒 1.79769313486231570E+308銆