关于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);
[解决办法]