cdouble存储
A. c语言里面,double和float的储存位置在同一个地方吗
变量的存储位置和该变量类型没有关系,和该变量的作用域有关。
如果都是局部变量,保存在代码区(text segment);
如果是全局静态变量,保存在全局初始化数据区/静态数据区(initialized data segment/data segment)
B. 怎样用C语言储存double的小数位
要取double 变量a后面小数点n位 那么这样
double a;
int b,n;
b=a*10^n;
然后把b对10取余,得到小数点后第n位,同时b=b/10;
再把b对10取余,得到小数点后第n-1位。。。。
依次进行就可以得到a小数点后n位了
呵呵!!
C. c语言中double型数据在内存中 占多少个字节来存储
c语言中double(双精度浮点型)是计算机使用的一种数据类型。double(双精度浮点型)使用 64 位(8字节) 来储存一个浮点数。 它可以表示十进制的15或16位有效数字,其数值范围为-1.79769313486232E308 到1.79769313486232E308。
(3)cdouble存储扩展阅读:
double(双精度浮点型)数值可转换到其他类型的整数或浮点数,反之亦然。double(双精度浮点型)常量的最后一个字符可加上“d”或“D”。其存储格式与浮点型类似,最高位为符号位,次高11位为指数位,其次52位为尾数。
double(双精度浮点型)同数值型比,它能提供更高的数值精度,采用固定存储长度的浮点数形式,与数值型数据不同,它的小数点位置是由输入的数据值来决定的,并且只能用于表中的字段。
D. c语言中double是什么意思
double是C语言的一个关键字,代表双精度浮点型。
E. 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
F. C语言中DOUBLE型数据储存结果
float与double类型的内存分布,精度和范围
内存分布:
C/c++的浮点数据类型有float和double两种。
float大小为4字节,内存中的存储方式如下:
符号位(1bit)指数(8bit)尾数(23bit)
double大小为8字节,内存中的存储方式如下:
符号位(1bit)指数(11bit)尾数(52bit)
符号位决定浮点数的正负,0正1负。指数和尾数均从浮点数的二进制科学计数形式中获取。
如,十进制浮点数2.5的二进制形式为10.1,转换为科学计数法形式为(1.01)*(10^1)。
由此可知指数为1,尾数(即科学计数法的小数部分)为01。
根据浮点数的存储标准,指数用移码表示。0的float类型移码为127(0111 1111),0的double类型移码为1023(011 1111 1111)。运算时,在0 的移码基础上加指数,得到的就是内存中指数的表示形式。尾数则直接填入,如果空间多余则以0补齐,如果空间不够则0舍1入。
所以float和 double类型分别表示的2.5如下(二进制):
符号位 指数 尾数
0 1000 0000 010 0000 0000 0000 0000 0000
0 100 0000 0000 0100 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000
精度:
float和double的精度是由尾数的位数来决定的。
float:2^23 = 8388608,一共七位,这意味着最多能有7位有效数字,但绝对能保证的为6位,也即float的精度为6~7位有效数字; double:2^52 = 4503599627370496,一共16位,同理,double的精度为15~16位。
范围:
float类的指数是8位移码,最大为127最小为-127,127用来作2的指数,为2^127,约等于 1.7014*10^38, 而我们知道,floa示数范围约为- 3.4*10^38-------3.4*10^38, 这是因为尾数都为1时,即1.11..11约为2,因此浮点数的范围就出来了.double的情况与float完全相似.
G. C语言中float,double等类型,在内存中的结构
从存储结构和算法上来讲,double和float是一样的,不一样的地方仅仅是float是32位的,double是64位的,所以double能存储更
高的精度。
任何数据在内存中都是以二进制(0或1)顺序存储的,每一个1或0被称为1位,而在x86CPU上一个字节是8位。比如一个16位(2
字节)的short int型变量的值是1000,那么它的二进制表达就是:00000011 11101000。由于Intel CPU的架构原因,它是按字节倒
序存储的,那么就因该是这样:11101000 00000011,这就是定点数1000在内存中的结构。
目前C/C++编译器标准都遵照IEEE制定的浮点数表示法来进行float,double运算。这种结构是一种科学计数法,用符号、指数和
尾数来表示,底数定为2——即把一个浮点数表示为尾数乘以2的指数次方再添上符号。下面是具体的规格:
````````符号位 阶码 尾数 长度
float 1 8 23 32
double 1 11 52 64
临时数 1 15 64 80
由于通常C编译器默认浮点数是double型的,下面以double为例:
共计64位,折合8字节。由最高到最低位分别是第63、62、61、……、0位:
最高位63位是符号位,1表示该数为负,0正;
62-52位,一共11位是指数位;
51-0位,一共52位是尾数位。
按照IEEE浮点数表示法,下面将把double型浮点数38414.4转换为十六进制代码。
把整数部和小数部分开处理:整数部直接化十六进制:960E。小数的处理:
0.4=0.5*0+0.25*1+0.125*1+0.0625*0+……
实际上这永远算不完!这就是着名的浮点数精度问题。所以直到加上前面的整数部分算够53位就行了(隐藏位技术:最高位的1
不写入内存)。
如果你够耐心,手工算到53位那么因该是:38414.4(10)=1001011000001110.(2)
科学记数法为:1.001……乘以2的15次方。指数为15!
于是来看阶码,一共11位,可以表示范围是-1024 ~ 1023。因为指数可以为负,为了便于计算,规定都先加上1023,在这里,
15+1023=1038。二进制表示为:100 00001110
符号位:正—— 0 !
合在一起(尾数二进制最高位的1不要):
01000000 11100010 11000001 11001101 01010101 01010101 01010101 01010101
按字节倒序存储的十六进制数就是:
55 55 55 55 CD C1 E2 40
H. c语言 double和float类型是怎样存储的
c里面实数默认是double类型的,所有的float都会被提至double来计算,然后再缩小成float,这样做是为了减少误差.
I. c语言的double 和int的区别,%d和%f的区别
int:整型,即我们通常意义下的整数变量,例如1、2、3、4、5等。
double:双精度实型数,即我们通常意义下的小数,例如1.25、1.37、5.0等。
%d:这是C语言中scanf用于输入整数的格式,输入整数的格式是scanf("%d",&a)。
%f:这是C语言中scanf用于输入小数的格式,输入整数的格式是scanf("%lf",&a)。
在你的公式C=(F-32)*5/9计算结果应该为双精度,不能用int来定义变量。如果强制赋型会导致数据丢失:小数部分会丢失,只保留整数部分。
(9)cdouble存储扩展阅读
双精度浮点数(double)是计算机使用的一种数据类型,使用 64 位(8字节) 来存储一个浮点数。 它可以表示十进制的15或16位有效数字,其可以表示的数字的绝对值范围大约是:2.23x10-308~ 1.79x10308。IEEE754为其定制标准。
C/C++编程语言中,int表示整型变量,是一种数据类型,用于定义一个整型变量,在不同编译环境有不同的大小,不同编译运行环境大小不同。在32/64位系统中都是32位,范围为-2147483648~+2147483647,无符号情况下表示为0~4294967295。