我在C ++中遇到数学问题。我正在使用的IDE是带有GNU编译器的Code :: Blocks。因此,问题是当我要求用户输入并且用户给我一个大于10000的数字(例如10001等)时,系统将输出6.9531e-308作为返回值!我不知道这是什么

#include <iostream>

double moneyBonus (double money, double& bonus);

int main ()
{
    double money, earnMoney, bonus;

    std::cin >> money;
    earnMoney  = money * (40.0/100.0);

    moneyBonus(money, bonus);

    std::cout << bonus << std::endl;

    return 0;
}

double moneyBonus(double money, double& bonus)
{
    if (money >= 0 && money <= 1000)
    {
        bonus = money * (3.0/100.0);
    }
    else if (money > 1000 && money <= 2000)
    {
        bonus = money * (5.0/100.0);
    }
    else if (money > 2000 && money <= 4000)
    {
        bonus = money * (7.0/100.0);
    }
    else if (money > 4000 && money <= 10000)
    {
        bonus = money * (8.0/100);
    }
}


编辑:解决了! (我没有找到任何按钮来将其标记为已解决)

最佳答案

问题是您没有初始化变量bonus。另外,如果奖励大于10000,则函数moneyBonus不执行任何操作。因此,您看到的输出是未初始化的值,这是一个垃圾值。

要修复它,要么

double bonus = 0; // or something


或在else函数中添加moneyBonus大小写,例如

else
{
  bonus = 0; // or whatever value your prefer
}


另外,从moneyBonus函数返回所需的值并使用它,或者将函数的类型更改为void

09-06 07:35