我在c。
中遇到了关于减号操作的问题printf("\nPlease enter your payment:\n", userpayment);
scanf("%.2f", &userpayment);
customerchange = userpayment - totalfinal;
printf("The amount of change is %.2f\n", customerchange);
我将userpayment
和totalfinal
声明为double
。
每当我输入价格时,例如; userpayment = 2000
而totalfinal
为1500,输出将始终为1500。
解决方案是什么?
这是输出:
输入物品价格: 500 输入物料数量: 3 付款总额为:RM1500.00 这是最后一项吗? ÿ 已向客户提供Rm50现金回赠。 现金回赠前的总付款额为:1500 现金回赠后的总付款额为1450
请输入您的付款: 5000 您的更改是RM-14500.00
答案 0 :(得分:5)
如果“userpayment”被定义为double,则更改
scanf("%.2f", &userpayment);
到
scanf("%lf", &userpayment);
或者将变量更改为浮点数。
就目前而言,你正在将浮动扫描到双重记忆中,导致不可预测的行为。
答案 1 :(得分:2)
scanf中的格式说明符不正确。阅读文档。
http://www.cplusplus.com/reference/cstdio/scanf/
您还应检查scanf
的返回值,以确保它能够解析您希望解析的内容。
另外,如果您已经阅读了编译器警告,那么您可以省去问这个问题的麻烦。
答案 2 :(得分:1)
你混淆了printf的格式,它很相似但不一样,试着将%.2f
替换为%lf
答案 3 :(得分:0)
由于您将变量定义为double,因此应使用:
scanf("%lf", &userpayment);
f表示浮点值,lf(long float)表示双精度。