我在c.中遇到了有关减号运算的问题
printf("nPlease enter your payment:n", userpayment);
scanf("%.2f", &userpayment);
customerchange = userpayment - totalfinal;
printf("The amount of change is %.2fn", customerchange);
我将userpayment
和totalfinal
声明为double
。
例如,每当我输入价格时;如果userpayment = 2000
和totalfinal
为1500,则输出将始终为1500。解决这个问题的办法是什么?
这是输出:
输入项目价格:500输入物料数量:3.付款总额为:RM1500.00这是最后一件吗?y已向该客户提供Rm50现金回扣。现金回扣前的总付款额为:1500现金回扣后的总付款额为1450
请输入您的付款:5000您的零钱是RM-14500.00
如果"userpayment"定义为double,则更改
scanf("%.2f", &userpayment);
至
scanf("%lf", &userpayment);
或者将变量改为float。
目前,您正在将浮点扫描到替身的内存中,从而导致不可预测的行为。
scanf中的格式说明符不正确。阅读文档。
http://www.cplusplus.com/reference/cstdio/scanf/
您还应该检查scanf
的返回值,以确保它能够解析您期望它解析的内容。
此外,如果你读过编译器的警告,你就可以省去问这个问题的麻烦。
您混淆了printf的格式,它相似但不相同,请尝试将%.2f
替换为%lf
由于您将变量定义为double,因此应该使用:
scanf("%lf", &userpayment);
f表示浮点值,lf(长浮点)表示双精度。