【发布时间】:2015-06-07 19:26:38
【问题描述】:
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。您将如何解决这个问题?
【问题讨论】:
-
你为什么用
static_cast<double>(100)而不是简单的100.0? -
我认为您必须将
supply++放在第二个循环的顶部 -
为了清楚起见,这只是我的风格。
-
是的,它确实有效,但为什么有效?
-
通过纸上的计算。不是让别人免费为我做这件事..
标签: c++ math simulation