繁体   English   中英

scanf不会读取双倍

[英]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);

我宣布用户userpaymenttotalfinaldouble

例如,每当我输入价格时; userpayment = 2000totalfinal为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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM