C++ C++;函数重载?圆面积

C++ C++;函数重载?圆面积,c++,math,C++,Math,我正在尝试使用我的程序获得圆的面积。但面积不是小数 #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 th

我正在尝试使用我的程序获得圆的面积。但面积不是小数

#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;
}
#包括
使用名称空间std;
圆形浮子面积(浮子r);
圆的内部面积(INTR);
int main()
{int rad;
库特拉德;

cout您没有调用该方法的
float
版本

AreaOfCircle((float)rad);
将变量声明为
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;
}

您没有调用该方法的
float
版本

AreaOfCircle((float)rad);
将变量声明为
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;
}

除了@Luchian的答案外,还需要将返回值更改为
浮点值

float AreaOfCircle(float r)
{
    int area=0;        // <<----- float area = 0;
    area=2*3.1456*r*r;
    return area;
}
或者只是:

float AreaOfCircle(float r) { return 2*3.1456*r*r; }

除了@Luchian的答案外,还需要将返回值更改为
浮点值

float AreaOfCircle(float r)
{
    int area=0;        // <<----- float area = 0;
    area=2*3.1456*r*r;
    return area;
}
或者只是:

float AreaOfCircle(float r) { return 2*3.1456*r*r; }

编译器将调用它认为与所传递的参数类型最匹配的重载。因为您传递了int,所以它假定您需要int版本


按照Luchian的建议铸造浮子(或首先使用浮子)您告诉编译器您希望参数为浮点类型-因此,它选择浮点版本。

编译器将调用它认为与所传递的参数类型最匹配的重载。因为您传递了一个int,所以它假设您想要int版本



按照Luchian的建议铸造浮子(或首先使用浮子)你告诉编译器你想让参数成为浮点型-因此,它选择了浮点型。

顺便说一下,半径为
r
的圆的面积是:
pi*r*r
。我不明白你为什么需要两个函数。这不就是代码的重复吗?我们能有两种方法来做到这一点吗,要么使用类型转换,要么使用O方法或函数的重载。顺便说一句,半径为
r
的圆的面积是:
pi*r*r
。我不明白为什么需要两个函数。这不只是代码的重叠吗?我们可以有两种方法来做到这一点,要么使用类型转换,要么重载方法或函数。此外,
float
-版本必须是c也在内部挂起。它当前使用
int
临时存储计算结果。
2*pi*r
称为圆的周长。感谢您的所有输入!我把我的program@yasouser它实际上是周长的
长度
。此外,
浮动
-版本必须在内部更改,也是。它目前使用
int
临时存储计算结果。
2*pi*r
称为圆的周长。谢谢你的所有输入!我把我的program@yasouser实际上是周长
@jogojapan,这就是我在这里说的?@jogojapan,这就是我在这里说的?谢谢谢谢你给我这个建议。