关于数值类型float和double

来源:百度知道 编辑:UC知道 时间:2024/06/07 16:42:57
#include "stdio.h"
#define PI 3.1415926
void main()
{
float r,l,s,v;
printf("输入半径:\n");
scanf("%f",&r);
l=2*PI*r;
s=PI*r*r;
v=4/3*PI*r*r*r;
printf("l=%f,s=%f,v=%f",l,s,v);

}

在这个程序中,float r,l,s,v;会出现3个警告,说conversion from 'double ' to 'float ', possible loss of data,于是我用double替换了float,结果是没有警告了,可是运行之后发现计算结果完全不正确,而不理会警告用float却呢个得出正确结果

那么用什么定义那四个数好才能又没有警告又正确呢?
没用啊,还是3个警告
……
怎么改都还是这样
c.c(8) : warning C4244: '=' : conversion from 'double ' to 'float ', possible loss of data
三个警告都一样的,8,9,10行

所有的%f改成%lf

字母l,不是数字1

l=2*PI*r; 改成 2.0
s=PI*r*r;
v=4/3*PI*r*r*r; 改成 4.0 3.0

警告信息自己理解一下。不理解的话帖上来。

printf("l=%f,s=%f,v=%f",l,s,v);
改成
printf("l=%lf,s=%lf,v=%lf",l,s,v);
因为你的“#define PI 3.1415926”对PI设置了 长 实
这样可以防止结果出错