为什么这个阶乘函数返回int而不是double

Why does this factorial function return an int instead of a double

本文关键字:double int 返回 阶乘 函数 为什么      更新时间:2023-10-16

在返回之前,类型是一个双精度,此时它将被剪裁为一个整数。为什么会这样?如有任何帮助,我们将不胜感激。

using namespace std;
double fac_counter = 1.0;

int factorial(double n) {
    for (double i = 1.0; i <= n; i++)
    {
        fac_counter = double(fac_counter)*i;
    }
    return fac_counter; 
}

您的返回类型是int将其更改为double

int factorial(double n)

将其更改为

double factorial(double n)

得到int的原因是函数的返回类型是int,而您想要的是double。

我还注意到你的代码有一个奇怪的行为。如果我使用

cout<<factorial(3);

我似乎得到了输出6但是当我使用时

printf("%lf",factorial(3));

我得到6.000000