C语言中的double是最多多少位?

作者&投稿:台邓 (若有异议请与网页底部的电邮联系)
c语言double * 多少位~

double占8个字节(64位)内存空间,最多可提供16位有效数字,小数点后默认保留6位。如全是整数,最多提供15位有效数字。测试代码如下,

#include
#include
int main(int argc, char *argv[])
{
printf("%lf
",123456789012345678.789);//输出123456789012345680.000000
printf("%lf
",(double)123456789012345678);//输出123456789012345680.000000
printf("%lf
",1234567890.1234567);//输出1234567890.123457
return 0;
}

对于double类型数据,通常不能与0直接比较,而是通过其绝对值小于给定的容差值来判断是否满足精度需求,"float.h"头文件往往定义了基本数据类型能够表示的数据的最大值和最小值,比如,
#define DBL_MIN 2.2250738585072014e-308 //宏定义了double类型最小正数

int变量占用2个字节,也就是16(位)bits.如果这16位只用来表示正数的话,就能最大表示2的16次方-1,如果发表示正负数的说,就需要把其中某一位拿来表示正负号,所以表示数值的位数就只有15位了,也就是2的15次方.
所以int变量的范围是-2的15次方到2的15次方-1

双精度实数,占用字节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

int isascii(int ch) 若ch是字符(ASCII码中的0-127)返回非0值,否则返回0

int iscntrl(int ch) 若ch是作废字符(0x7F)或普通控制字符(0x00-0x1F)

以上内容参考:百度百科-C语言函数



double占8个字节(64位)内存空间,最多可提供16位有效数字,小数点后默认保留6位。如全是整数,最多提供15位有效数字。测试代码如下,

#include <stdio.h>
#include <math.h>
int main(int argc, char *argv[])
{
printf("%lf\n",123456789012345678.789);//输出123456789012345680.000000
printf("%lf\n",(double)123456789012345678);//输出123456789012345680.000000
printf("%lf\n",1234567890.1234567);//输出1234567890.123457
return 0;
}

对于double类型数据,通常不能与0直接比较,而是通过其绝对值小于给定的容差值来判断是否满足精度需求,"float.h"头文件往往定义了基本数据类型能够表示的数据的最大值和最小值,比如,
#define DBL_MIN 2.2250738585072014e-308 //宏定义了double类型最小正数

C语言中double代表的意思是:

double是C语言的一个关键字,代表双精度浮点型,占8个字节内存空间,其数值范围为“1.7E-308~1.7E+308”,双精度完全保证的有效数字是15位,16位只是部分数值有保证。

double 和 float 区别

C语言中,float和double都属于浮点数。区别在于:double所表示的范围,整数部分范围大于float,小数部分,精度也高于float。

举个例子:圆周率3.1415926535 这个数字,如果用float来表示,最多只能精确到小数点后面的6位。而double大约能精确到小数点后面的15位左右。具体精确到几位,跟所用的编译器有关,但是各个编辑器编译器之间,也是相差不大的。

至于整数部分,float表示的整数部分的范围,就已经够大了,能表示到万亿级别,已经大到没边了。而double所表示的整数范围,大到更没边了。实际开发中,除了个别高精领域,基本上,使用float就足够了。

double是C语言的一个关键字,bai代表双du精度浮点型。

占8 个字节(64位)内存空间zhi。其数dao值范围为1.7E-308~1.7E+308,双精度完全保证的有效数字是15位,16位只是部分数值有保证。

可以用格式化输入输出语句scanf和printf进行double类型的输入输出,格式化字符为%lf。

赋值中的类型转换

当赋值运算符两边的运算对象类型不同时,将要发生类型转换, 转换的规则是:把赋值运算符右侧表达式的类型转换为左侧变量的类型。具体的转换如下:

1、浮点型与整型

单双精度)转换为整数时,将舍弃浮点数的小数部分, 只保留整数部分。将整型值赋给浮点型变量,数值不变,只将形式改为浮点形式, 即小数点后带若干个0。注意:赋值时的类型转换实际上是强制的。

2、单、双精度浮点型

由于C语言中的浮点值总是用双精度表示的,所以float 型数据只是在尾部加0延长为double型数据参加运算,然后直接赋值。double型数据转换为float型时,通过截尾数来实现,截断前要进行四舍五入操作。

3、 char型与int型

int型数值赋给char型变量时,只保留其最低8位,高位部分舍弃。

char型数值赋给int型变量时, 一些编译程序不管其值大小都作正数处理,而另一些编译程序在转换时,若char型数据值大于127,就作为负数处理。

对于使用者来讲,如果原来char型数据取正值,转换后仍为正值;如果原来char型值可正可负,则转换后也仍然保持原值, 只是数据的内部表示形式有所不同。

双精度实数。
占用字节8
有效数字15~16(因为二进制转十进制问题)
数值范围-1.7*10负308次方~1.7*10的308次方。

当有效数字全部是整数时,即整数有15~16位。
ps:严重同意tanyuguo的:“只考虑有效位数,不考虑整数部分有多少位”。

具体内存中的表示方法参考:http://zhidao.baidu.com/question/15397287.html

32位下:
double占用字节8,数值范围-1.7*10^-308~1.7*10^308。

什么是double型数据
答:Double可以表示十进制的15或16位有效数字,负值取值范围为 -1.7976E+308 到 -4.94065645841246544E-324,正值取值范围为 4.94065645841246544E-324 到 1.797693E+308。Double 的最大正数值是 1.79769313486232D+308 或 1.8 乘以 10 的 308 次方,用 D 将数值文字中的假数部分和指数部分隔开,...

c语言double和float区别
答:C语言中,float和double都属于浮点数。区别在于:double所表示的范围,整数部分范围大于float,小数部分,精度也高于float。例如圆周率3.1415926535这个数字,如果用float来表示,最多只能精确到小数点后面的6位。而double大约能精确到小数点后面的15位左右,具体精确到几位,跟所用的编译器有关,但是各个编辑...

在c语言中, double所定义的常量到底可以保留几位小数???
答:程序默认是6位,但实际有效位数是16位

C语言中sizeof(double)是
答:C 一个整型表达式 。sizeof() 是一个获取数据类型或者表达式长度的运算符。例如:sizeof(int)就是获取int型的长度,所以值为4,即int型占4字节内存。double是C语言的一个关键字,代表双精度浮点型。占8 个字节(64位)内存空间。其数值范围为1.7E-308~1.7E+308,双精度完全保证的有效数字是15...

c语言中double是什么意思?
答:double在这里是指将变量i和变量s定义为双精度实型变量。(也就是说:赋给这两个变量的值将以双精度实型格式存储在内存中)注意事项 1、类型说明符和表达式都必须加括号(单个变量可以不加括号),如把(int)(x+y)写成(int)x+y则成了把x转换成int型之后再与y相加了。2、无论是强制转换或是自动...

C语言double和int有什么区别?各个表示范围是多少?
答:如果是无符号整数unsigned int,那么16bits系统(DOS系统):0到(2^16-1),32bits:0到(2^32-1),64bits:0到(2^64-1)。2、double为双精度浮点型,能准确到小数点后十二位,1.7 x 10^(-308)~ 1.7 x 10^(+308)。3、因为所有的计算机语言,每个类型都向更精确的方向去自动转。

c语言中double和float它们储存时分别占据多大的记忆体空间?
答:外,double的运算速度比float慢得多。在不确定的情况下还是尽量用double以保持正确性.c语言中double和float的区别 两个型别的精度不同。 double精度高,有效数字16位,float精度7位。但double消耗记忆体是float的两倍,double的运算速度比float慢得多,在不确定的情况下还是尽量用double以保持正确性.

C语言中double要输出几位小数?
答:c语言中想要让输出数字保留几位小数该怎么做?举个例子,如果想要输出保留三位小数的双精度浮点数,则应该这样写:printf("%.3lf",d);其中的“.3”就是小数点后保留三位小数。注意,3前面有个点哈!C语言中float ,double, long double分别最多可支援几位小数点 float 单精度浮点,8个点。double...

C语言编写输出double的最大值
答:首先你知道double是8个字节,然后你得知道double的内存存储结构 低52位是底数,这里全用1填充 再11位是指数,11位指数可表示-1024~1023,规定统统加上1023,所以指数这里填充2046的bit位 最高位是符号为,为0表示+ 测试代码如下:include <stdio.h> //for printf#include <string.h>//for memcpy#...

C语言中float 和 double有什么区别 用法
答:C语言中,float和double都属于浮点数。区别在于:double所表示的范围,整数部分范围大于float,小数部分,精度也高于float。举个例子:圆周率3.1415926535 这个数字,如果用float来表示,最多只能精确到小数点后面的6位。而double大约能精确到小数点后面的15位左右。具体精确到几位,跟所用的编译器有关,...