C语言计算圆的面积的问题
答案:6 悬赏:20
解决时间 2021-02-17 02:13
- 提问者网友:相思瘸子
- 2021-02-16 04:38
代码为:
#include
#include
#define PI 3.14;
int main(void)
{
float r,s;
printf("输入圆的半径\n");
scanf("%f",&r);
s = r * r * PI;
printf("圆的面积为:%f\n",s);
return 0;
}
出现D:\1.cpp(9) : warning C4244: '=' : conversion from 'double' to 'float', possible loss of data这个错误,如果忽略的话,输入r后,s的值就为零,怎么解决?
最佳答案
- 二级知识专家网友:懂得ㄋ、沉默
- 2021-02-16 05:00
楼主你好
你定义的宏:PI=3.14 这里没有指明PI的数据类型
在c语言中 浮点数没有指明类型的 默认为双精度double型的
而你定义的s、r都是单精度float 这样在执行s = r * r * PI 会发生类型不匹配的错误
一个简单的方法就是: float r,s 改为:double r,s
希望能帮助你哈
全部回答
- 1楼网友:甜野猫
- 2021-02-16 08:07
#include 这个有用?
运行程序输入时把r输成5.0(r.0)试试,应该就是个变量类型不同的问题吧。
- 2楼网友:我们只是兮以城空
- 2021-02-16 06:57
同2楼
- 3楼网友:有钳、任性
- 2021-02-16 06:30
PI = 3.14 这个字面值是double类型,不是float类型
直接解决的方法就是把r s都定义成double
- 4楼网友:嗷呜我不好爱
- 2021-02-16 06:12
#include
#include
#define PI 3.14;
int main(void)
{
float r,s;
printf("输入圆的半径:\n");
scanf("%f",&r);
s = r * r * PI;
printf("圆的面积为:%f\n",s);
return 0;
}
输入圆的半径:
2
圆的面积为:12.560000
Press any key to continue
没问题啊
- 5楼网友:woshuo
- 2021-02-16 05:32
PI 被定义为 3.14,第9行预处理的结果是:
s=r*r*3.14;
常量3.14默认为double型,那么等号右面的结果就是double型,而s被定义为 float,float表达的数的范围没有double大,所以有编译告警。
修改:两种方法:把3.14定义为3.14f, #define PI 3.14f
或者,r s 两个变量定义为double
我要举报
大家都在看
推荐资讯