读书人

关于double和float的有关问题 求指教

发布时间: 2012-07-31 12:33:47 作者: rapoo

关于double和float的问题 求指教

C/C++ code
#include<stdio.h>int main(){    float f,c;    f=64.0;    c=(5.0/9)*(f-32);    printf("f=%f\nc=%f\n",f,c);}

这是编译时的警告:
--------------------Configuration: t - Win32 Debug--------------------
Compiling...
t.c
D:\大一\C程序设计\Microsoft Visual C++ V6.0 简体中文\MSDev98\MyProjects\text\t.c(6) : warning C4244: '=' : conversion from 'double ' to 'float ', possible loss of data

t.obj - 0 error(s), 0 warning(s)


老谭那本书(第四版 P39)说VC++ 6.0编译系统 把所有实数都作为双精度处理,因此提醒用户把双精度常量赋给float型变量会造成精度损失。
为什么要把实数作为双精度处理?
还有
double型和float数据输入格式符的问题 是不是double型的用%lf float型的用%f ? 而输出格式符是不是都是%f?
还有我想输入和输出12343434341.1234687167836812类似这样的变量要用什么类型呢或怎么去实现呢?

[解决办法]
C/C++ code
#include<stdio.h>int main(){    float f,c;    f=64.0f;    c=(5.0f/9.0f)*(f-32.0f);    printf("f=%g\nc=%g\n",f,c);    return 0;}
[解决办法]
c=(5.0f/9.0f)*(f-32.0f);

[解决办法]
探讨

为什么在9.0和32.0后面加f 这有什么作用呢?引用:

C/C++ code
#include<stdio.h>
int main()
{
float f,c;
f=64.0f;
c=(5.0f/9.0f)*(f-32.0f);
printf("f=%g\nc=%g\n",f,c);
return 0;
}

读书人网 >C语言

热点推荐