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