PerCent的C ++数学

时间:2015-10-09 17:39:54

标签: c++

我在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);
    }
}
编辑:解决了! (我没有找到任何按钮将其标记为已解决)

2 个答案:

答案 0 :(得分:2)

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

要修复它,要么

double bonus = 0; // or something

或者在else函数中添加moneyBonus个案例,如

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

此外,要么从moneyBonus函数返回所需的值并使用它,要么将函数的类型更改为void

答案 1 :(得分:1)

变量“bonus”未初始化为10000及以上的值