[英]scanf doesn't read double
我在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这是最后一个物品吗? 向客户提供了50马币的现金回扣。 现金返还前的总付款额为:1500现金返还后的总付款额为1450
请输入您的付款:5000零钱是RM-14500.00
如果将“用户付款”定义为双精度,则更改
scanf("%.2f", &userpayment);
至
scanf("%lf", &userpayment);
或将变量更改为浮点数。
就目前而言,您正在将一个float扫描到double的内存中,从而导致不可预测的行为。
您在scanf中使用了不正确的格式说明符。 阅读文档。
http://www.cplusplus.com/reference/cstdio/scanf/
您还应该检查scanf
的返回值,以确保它能够解析您期望解析的内容。
同样,如果您已阅读编译器警告,则可以省去问这个问题的麻烦。
您混淆了printf的格式,这是相似但不相同的,请尝试将%.2f
替换为%lf
由于将变量定义为double,因此应使用:
scanf("%lf", &userpayment);
f是浮点值,lf(长浮点)是双精度值。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.