带百分比的 C++ 数学

标签 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);
    }
}

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

最佳答案

问题是您没有初始化变量 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/

相关文章:

c++ - 通过构造函数初始化集初始化的变量的销毁顺序是什么?

c++ - 引用在 C++ 中占用内存吗?

c++ - 复制构造函数和赋值运算符都被调用

c++ - 带有 libcurl v7.43.0 的 Axis Camera 上的 RTSP DESCRIBE 返回 RTSP 错误代码 400

c++ - 固定大小和零初始化数组作为 C++11 中的默认参数

c++ - c++判断一个值是否在该数据类型的最大范围内

C++ 概念 : How to use 'concept' to check the property of a templated struct?

c++ - "cpp-bin"在linux中是什么意思?

c++ - Base64 在编码特殊字符时不起作用

c++ - 为什么通过 gSOAP 发送二进制数据太慢了?