我哪里错了?我没有得到预期的输出

时间:2016-01-02 21:52:22

标签: c rounding

我尝试根据问题编写代码。但是我面临着舍入问题的问题。任何人都可以解释我在哪里面对这个问题吗?

  

M = 12,T = 20,X = 8 tip =(20×12)/100=2.4 tax =(8×12)/100=0.96 final   价格= 12 + 2.4 + 0.96 = 15.36正式价格为15.36美元,   但四舍五入到最近   美元(整数),这顿饭是15美元。

这是我的完整代码:

#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>

int main() {
    int t, x;
    double m;
    scanf("%lf", &m);
    scanf("%d", &t);
    scanf("%d", &x);
    double tip, tax;

    tip= m*t/100;
    tax= t*x/100;
    int total= (int)(round( tip + tax +m ));

    printf("The final price of the meal is $%d.", total);
    return 0;
}

当我接受输入15.91,15,10时,它会显示输出19而不是20

我在哪里犯错?

1 个答案:

答案 0 :(得分:0)

当你这样做时 tax= t*x/100;
你正在进行整数除法,所以它将被舍入。

您将 15 * 10/100 = 1 ,而不是 1.5

另外,当你提出问题时,你有t*x代替m*x

M=12, T=20, X=8 
tip=(20×12)/100=2.4 
     T  M
tax=(8×12)/100=0.96 
     X M

将其更改为

tip= m*t/100.0; tax= m*x/100.0;

你将得到预期的20作为最终结果