当将变量设置为double并将double添加到整数时,为什么会出现整数值?

时间:2015-10-21 22:16:25

标签: c++ double

我试图创建一个将整数的阶乘返回为双精度的代码。但是,每次我使用代码时,它都不会返回双精度数。它总是返回整数。

我希望代码返回由零跟踪的阶乘。

实施例。 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;
}

3 个答案:

答案 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::setprecisionstd::fixed