c++ - 买卖迷你模拟器

标签 c++ math simulation

void test(){
    double money = 10000;
    double price = 0;
    int supply = 101;
    price = static_cast<double>(100) / supply;
    //buying
    for (int i = 0; i < 100; i++)
    {
        price = static_cast<double>(100) / supply;
        money -= price;
        supply--;
    }
    //selling
    for (int i = 0; i < 100; i++)
    {
        price = static_cast<double>(100) / supply;
        money += price;
        supply++;
    }
    cout << money << endl;
}

上面的代码根据产品的可用性计算产品的价格,然后它“购买”,减少商品的供应和客户的钱,一次减少一个,然后重新计算商品的价格每次购买。当客户决定出售产品时,也会发生类似的过程。这里的错误是输出:money 变量的最后一个值是 10099 而不是预期的 10000。你会如何解决这个问题?

最佳答案

问题是当最后一件商品被购买时,它是以适合供应 N 的价格购买的。然后电源减少到 N - 1。然后以适合供应 N - 1 的价格出售第一个要出售的商品。重复这个问题 100 次,这就解释了你的不同之处。

如果您希望元素以与购买时相同的价格出售,那么您应该在销售循环中的价格计算之前增加 supply

关于c++ - 买卖迷你模拟器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30697572/

相关文章:

java - Integer.parseInt() 抛出 "For input string: XXX"

simulation - 用于仿真的 VHDL 替代子模块架构

c# - 计算 x 除以 x2 时的最大舍入差异

math - 缩放至 3D 屏幕空间选择框

c++ - 如何在 Qt App 项目中创建 Qt Plugin 项目

c++ - STL字符串比较方法与手动编写的方法之间存在巨大的时间差异

python - Lotka Volterra 和 Runge Kutta 不需要精确度

functional-programming - 没有全局队列的离散事件模拟?

c++ - 使用 C++ CGI 脚本输入异常

c++ - NEON汇编代码,如何将BYTE转换为 float ?