c语言double精度
1. 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。
2. c语言中double是什么意思
double是C语言的一个关键字,代表双精度浮点型。
3. c语言数据类型为何是双精度型
1、双精度,单精度指浮点型数,
双精度 叫 double 型, 单精度 float 型。
double 型 用 64位2进制存放,float 型 用 32位2进制存放。
所以,两种数 的 最大和最小 数值范围 不同,数的有效数字个数不同,也就是精度不同。
2、double 型 最大数值 1.7976931348623158e+308
最小正数数值 2.2250738585072014e-308
有效数字 十进制 15 位。
float 型
最大数值 3.402823466e+38F
最小正数数值 1.175494351e-38F
有效数字 十进制 6-7 位。
详细定义 见编译器 头文件 float.h
4. C语言double型精度错误
你这个说法错了:
“按理说double型数据长达8个字节,可以精确到小数点后15位”
应该是“double型数据可以保证15位有效数字”。但是其整数部分已经占了8位,所以,最多只能有7位小数是可以保证精度的。
5. double在c语言中的意思是什么
double在这里是指将变量i和变量s定义为双精度实型变量。也就是说:赋给这两个变量的值将以双精度实型格式存储在内存中。
注意事项
1、类型说明符和表达式都必须加括号(单个变量可以不加括号),如把(int)(x+y)写成(int)x+y则成了把x转换成int型之后再与y相加了。
2、无论是强制转换或是自动转换,都只是为了本次运算的需要而对变量的数据长度进行的临时性转换,而不改变数据说明时对该变量定义的类型。
数据类型
double(双精度浮点型)是计算机使用的一种资料型别。比起单精度浮点数(float),double(双精度浮点数)使用 64 位(8字节) 来储存一个浮点数。 它可以表示十进制的15或16位有效数字,负值取值范围为 -1.7976E+308到 -4.94065645841246544E-324,正值取值范围为 4.94065645841246544E-324到 1.797693E+308
以上内容参考:网络-double
6. c语言中为什么float型自变量的精确度是6到7位,double型的精确度是15到16位
主要是这两种变量占用的内存数不同,float 型4个字节,32位;double型8个字节,64位。它们在内存中是按科学计数法来存储的,而且float和double的精度是由尾数的位数来决定的:
①对于float 型浮点数来说,符号位占1位,指数位占8位,尾数位23位,则有2^23 = 8388608,一共七位有效数字(能保证的为6位),即float的精度为6~7位有效数字。
②类似的对于double 型浮点数来说:尾数位52位,2^52= 4503599627370496,共16位,即double型数的精度为15~16位。
7. 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语言函数
8. c语言中double精度有几位小数,float有几位小数
loat为单精度,占4字节(32位)的内存空间,它的数值有效范围是-10的38次方到10的38次方,只表示7位有效数字。而double为双精度,8字节,正负10的308次方之间,能精确到16位。这应该就是他们的的最基本的区别吧。。。
9. C语言中double要输出几位小数
1.
C语言中double默认输出
6
位小数。
2.
如果要控制输出小数位数,可以格式化输出。
printf("%.3lf
",
d);
//
"%.3lf"
.3
则是输出
3
位小数
printf("%.4lf
",
d);
//
"%.4lf"
.4
则是输出
4
位小数
10. double在c语言中的意思是什么
double是C语言的一个关键字,代表双精度浮点型,占8个字节内存空间,其数值范围为“1.7E-308~1.7E+308”,双精度完全保证的有效数字是15位,16位只是部分数值有保证。
C语言中,float和double都属于浮点数。区别在于:double所表示的范围,整数部分范围大于float,小数部分,精度也高于float。
举个例子:圆周率3.1415926535 这个数字,如果用float来表示,最多只能精确到小数点后面的6位。而double大约能精确到小数点后面的15位左右。具体精确到几位,跟所用的编译器有关,但是各个编辑器编译器之间,也是相差不大的。
至于整数部分,float表示的整数部分的范围,就已经够大了,能表示到万亿级别,已经大到没边了。而double所表示的整数范围,大到更没边了。实际开发中,除了个别高精领域,基本上,使用float就足够了。