为什么我的公式无法在WHILE循环中计算值?

时间:2018-12-09 22:12:43

标签: c++ visual-c++

我正在尝试获取我的控制台代码的中间计算结果。
任务如下:

仓库中总共有 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值。

我在做什么错了?

1 个答案:

答案 0 :(得分:3)

Mint。因此,(1 + (M - 1) / 10)也是int。该除法是整数除法。您将永远无法获得1.1。每次都将其截断为1。

在此处使用/ 10.0使其全部为浮点数。