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銆