SCANF 不读取双精度

  • 本文关键字:双精度 读取 SCANF c
  • 更新时间 :
  • 英文 :


我在c.中遇到了有关减号运算的问题

printf("nPlease enter your payment:n", userpayment);
scanf("%.2f", &userpayment);
customerchange = userpayment - totalfinal;
printf("The amount of change is %.2fn", customerchange);

我将userpaymenttotalfinal声明为double

例如,每当我输入价格时;如果userpayment = 2000totalfinal为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(长浮点)表示双精度。

最新更新