我尝试根据问题编写代码。但是我面临着舍入问题的问题。任何人都可以解释我在哪里面对这个问题吗?
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
我在哪里犯错?
答案 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作为最终结果