我试图创建一个将整数的阶乘返回为双精度的代码。但是,每次我使用代码时,它都不会返回双精度数。它总是返回整数。
我希望代码返回由零跟踪的阶乘。
实施例。 5! = 120.0000,而不仅仅是120。
#include <iostream>
using namespace std;
int main()
{
double fac_total=1.0;
int number;
cin >> number;
for (int x=1; x <= number; x++)
fac_total = x*(fac_total+0.0);
return fac_total;
}
答案 0 :(得分:6)
因为int main()
返回整数...
答案 1 :(得分:2)
就像@djechlin所说的那样,main函数的返回类型是一个int,因此它只返回整数。 为什么你想要返回一个双倍?您是否在计算结果上使用bash脚本? 我注意到你正在使用cin,所以为什么不使用
cout << fac_total << endl;
返回声明前的。 (然后返回0;)
答案 2 :(得分:2)
如果您希望保持您的计划符合标准,则不能从int
返回main
以外的任何内容。
此外,0
的返回值表示成功,非零值表示失败。您可能应该将该号码打印到stdout
并从0
返回main
。
int main()
{
double fac_total=1.0;
int number;
cin >> number;
for (int x=1; x <= number; x++)
fac_total = x*(fac_total+0.0);
std::cout << std::setprecision(3) << std::fixed << fac_total << std::endl;
return 0;
}
您可以使用console / shell提供的功能捕获程序的输出。
确保添加
#include <iomanip>
#include <ios>
可以使用std::setprecision
和std::fixed
。