我对 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
或者在你的moneyBonus
函数中添加一个else
案例
else
{
bonus = 0; // or whatever value your prefer
}
此外,要么从 moneyBonus
函数返回所需的值并使用它,要么将函数的类型更改为 void
。
关于带百分比的 C++ 数学,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33044199/