在返回之前,类型是双倍的,此时它会被剪切为整数。为什么是这样?任何帮助将不胜感激。
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;
}
答案 0 :(得分:0)
您的返回类型为 int 将其更改为 double
答案 1 :(得分:0)
int factorial(double n)
将其更改为
double factorial(double n)
你得到一个int的原因是你的函数的返回类型是int,你想要的是double。
我还注意到你的代码有一种奇怪的行为。如果我使用
cout<<factorial(3);
我似乎得到输出6
但是当我使用
printf("%lf",factorial(3));
我得到6.000000
。