我正在尝试获取我的控制台代码的中间计算结果。
任务如下:
仓库中总共有 A 吨蔬菜。
在第1个月末,我们要出售 B 吨,在第2个月末我们要出售(1.1 * B),在M个月末我们要采取(1+(M-1)/ 10)* B 吨。我们有10个月的限制(我们不能计算超过10个月的时间)。
初始A和B值由用户输入。
我的代码:
float A,B;
int M = 1;
... /here user types stuff in/...
while (M<10)
{
B = (1 + (M - 1) / 10) * B; // goddamn formula that can't execute normally
cout << "It's " << M << " month, we took " << B << " tonnes of vegs." << endl;
M++;
}
我输入的内容:
A = 500; B = 1
我期望发生的事情:
这是1个月,我们提取了1吨蔬菜。
静默计算:B =(1+(1-1)/ 10)* 1 = 1; M = 1 + 1 = 2
这是2个月,我们提取了1.1吨蔬菜。
静默计算:B =(1+(2-1)/ 10)* 1 = 1.1; M = 2 + 1 = 3
这是3个月,我们提取了1.32吨蔬菜。
静默计算:B =(1+(3-1)/ 10)* 1.1 = 1.32; M = 3 + 1 = 4
依此类推,直到第10个月。
相反,我看到的是:
这是1个月,我们吃了1吨蔬菜
两个月,我们吃了1吨蔬菜
三个月,我们吃了1吨蔬菜
依此类推,所以月份是在计算中,但任务的公式却没有。
总是显示我放置的B值。
我在做什么错了?
答案 0 :(得分:3)
M
是int
。因此,(1 + (M - 1) / 10)
也是int
。该除法是整数除法。您将永远无法获得1.1。每次都将其截断为1。
在此处使用/ 10.0
使其全部为浮点数。