rel="File-List" href="file:///C:%5CDOCUME%7E1%5CADMINI%7E1%5CLOCALS%7E1%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_filelist.xml"> rel="Edit-Time-Data" href="file:///C:%5CDOCUME%7E1%5CADMINI%7E1%5CLOCALS%7E1%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_editdata.mso"> rel="themeData" href="file:///C:%5CDOCUME%7E1%5CADMINI%7E1%5CLOCALS%7E1%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_themedata.thmx"> rel="colorSchemeMapping" href="file:///C:%5CDOCUME%7E1%5CADMINI%7E1%5CLOCALS%7E1%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_colorschememapping.xml">
2.4双精度型数据:在内存中占8个字节(8Byte=64bit)
u 双精度型:字长比浮点型多一倍,一般占用8个字节,其中(n2=48)+(n1=16)=64。
u 其精度大约为17位有效数字,浮点型为7为精度。
u C中每个浮点常量在机中都是以双精度来存放和表示的;
u 双精度标量是通过double保留字来说明的;
例如: double a,b;
a=2.18281828459;b=4.848481006e-7;
例题:证明精度与误差的关系。
#include <stdio.h>
main()
{float x;double y; int I;
X=0.0;y=0.0;i=1;
While (i<=10000)
{
x=x+10000.0;y=y+10000.0;i=i+1
}
x=x/10000.0;y=y/10000.0;
printf(“x=%f,y=%f/n”,x,y);
}
其结果是:x=99985.179688,y=100000.000000
可以看出X有约1.5%0的误差,而Y没有精度损失。
rel="File-List" href="file:///C:%5CDOCUME%7E1%5CADMINI%7E1%5CLOCALS%7E1%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_filelist.xml"> rel="Edit-Time-Data" href="file:///C:%5CDOCUME%7E1%5CADMINI%7E1%5CLOCALS%7E1%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_editdata.mso"> rel="themeData" href="file:///C:%5CDOCUME%7E1%5CADMINI%7E1%5CLOCALS%7E1%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_themedata.thmx"> rel="colorSchemeMapping" href="file:///C:%5CDOCUME%7E1%5CADMINI%7E1%5CLOCALS%7E1%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_colorschememapping.xml">
-------------------------------------------------------------------------------------------------对于双精度这个数据类型,大家可以在用C编译一下,就上面那个源代码就可以,可以清晰的看出浮点型与双精度型数据的不同,这个双精度也是很容易让我们在编程中忽视的一个数据,这些小数点和精度有时候直接就影响着整一个程序的好坏。打一个比方,比如“π”浮点型和双精度所表达的是完全不同的精度,然后如果我们让火箭飞行路线的公式中有一个“π”,那么用计算机来算这个公式,,哈哈,聪明的大家应该可以马上想得到,浮点型和双精度的厉害之处了吧。用浮点型可能飞去了月球,用双精度就可能飞到了火星上去了。所以计算机的精度一直是我们在解决的问题,这个问题是永远的问题,这个就像你有了很多钱,还是觉得不过,还要更多的钱一样,计算机也一样它需要更精确的精度,这个是永远都没有满足的~~,呵呵……但是这种计算机的欲望是好的,不想我们人的某些欲望,是可以杀人的呀~~~怕怕啊···