我在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
。