可惜你没有女朋友:C语言的高手来!!!急啊!!!

来源:百度文库 编辑:高考问答 时间:2024/04/28 20:58:53
main()
{float x;
double y;
x=123456.7777;y=123456.7777;
printf("x=%f,y=%f\n",x,y)
}
怎么运行的结果就是x=123456.781250
y=123456.777700
为什么X,Y的输出结果会是这个样子的?大虾们请赐教!

warning C4305: '=' : truncation from 'const double' to 'float'

x值的不同是由于是实数在内存中的存储误差引起的。你可以用vc的工具看看

变量在内存中的值

float 占用32位二进制,有24位用来确定精度,8位用来确定10的多少次方.double占用64位二进制,有48位用来确定精度,16位用来确定的多少次方.24位二进制只能精确到1-2的24次方也就是大概7位数