我正在尝试使用我的程序获得圆圈区域。但是区域不是小数点。
#include<iostream>
using namespace std;
float AreaOfCircle(float r);
int AreaOfCircle(int r);
int main()
{int rad;
cout<<"Enter the Radius of Crircle: ";
cin>>rad;
cout<<"The Are of the Cirlcle: "<<AreaOfCircle(rad);
}
float AreaOfCircle(float r)
{
int area=0;
area=2*3.1456*r*r;
return area;
}
int AreaOfCircle(int r)
{
int area=0;
area=2*3.1456*r*r;
return area;
}
但我需要回答一些小数点。
答案 0 :(得分:7)
您没有调用该方法的float
版本。
将变量声明为float
float rad;
或在调用方法之前将其强制转换为float
。
AreaOfCircle((float)rad);
您还需要在重载方法中使用float
而不是int
:
float AreaOfCircle(float r)
{
float area=0; // <--- float here
area=2*3.1456*r*r;
return area;
}
此外:
area = pi * r * r
length = 2 * pi * r
pi ~= 3.1415
答案 1 :(得分:3)
除了@Luchian回答之外,您还需要将返回值更改为float
:
float AreaOfCircle(float r)
{
int area=0; // <<----- float area = 0;
area=2*3.1456*r*r;
return area;
}
更改为:
float AreaOfCircle(float r)
{
float area=0;
area=2*3.1456*r*r;
return area;
}
或只是:
float AreaOfCircle(float r) { return 2*3.1456*r*r; }
答案 2 :(得分:0)
编译器将调用它认为与传递的参数类型最匹配的重载。因为你传递了一个int,所以它假设你想要int版本。
通过Luchian建议(或者首先使用浮点数)转换为浮点数,你告诉编译器你打算将参数作为浮点类型 - 因此,它选择浮点版本。