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

发布网友 发布时间:2022-04-24 03:27

我来回答

5个回答

热心网友 时间:2022-05-27 11:14

双精度实数,占用字节8。

有效数字15~16(因为二进制转十进制问题)。

数值范围-1.7*10负308次方~1.7*10的308次方。

当有效数字全部是整数时,即整数有15~16位。

C语言中,输出double类型(双精度实型)以及float类型(单精度实型)时,默认输出6位小数(不足六位以 0 补齐,超过六位按四舍五入截断)。double a = 1;printf("%lf\n", 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语言函数

热心网友 时间:2022-05-27 11:14

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

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

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

热心网友 时间:2022-05-27 11:15

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语言的一个关键字,代表双精度浮点型。

占8 个字节(位)内存空间。其数值范围为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型值可正可负,则转换后也仍然保持原值, 只是数据的内部表示形式有所不同。

热心网友 时间:2022-05-27 11:15

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

#include <stdio.h>
#include <math.h>
int main(int argc, char *argv[])
{
printf("%lf\n",1234567012345678.7);//输出1234567012345680.000000
printf("%lf\n",(double)1234567012345678);//输出1234567012345680.000000
printf("%lf\n",12345670.1234567);//输出12345670.123457
return 0;
}

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

热心网友 时间:2022-05-27 11:16

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

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com