【问题标题】:Calculating percentages in C在 C 中计算百分比
【发布时间】:2021-01-25 11:42:05
【问题描述】:

我试图找出 C 中的百分比是如何计算的,特别是我试图找出你从用户输入中获得了多少税,如果税为 21%。

但在终端中尝试输入代码后:130, 这意味着我想要 130 美元的 21%,它给了我一个负值 -858993459

如何解决这个问题或我哪里出错了?

我所有的谷歌搜索也都是空的,但可能是因为我没有使用正确的措辞,所以欢迎所有信息。

#include <stdio.h>

double get_tax_amount(double price_including_taxes)
{
  return price_including_taxes *0.21;
}

int main()
{
  printf("What was your price? ");
  double price;
  scanf("%d", &price);
  printf("The tax price is: %d", get_tax_amount (price));      
}

【问题讨论】:

  • scanf("%lf", &amp;price);printf("The tax price is: %f\n", get_tax_amount(price));
  • 两者有什么区别?你能解释一下为什么我必须使用 %lf 而不是 %d 吗?
  • 你的书/讲师应该把这一切都说清楚。如果你想阅读规范 ==> here's an HTMLized freely available version of a draft of the C11 Standard
  • %d 用于int%lf in scanf 用于double。它在你的 C 教科书中。如果你还没有,是时候买一个了。
  • 欢迎来到 SO。如果你没有从你的编译器中得到一些警告,你应该调高警告级别。对于 GCC,您可以使用 -Wall -Wextra 来实现。

标签: c function integer


【解决方案1】:

您在 scanfprintf 中都使用了错误的转换说明符。要使用scanf 读取double 值,您需要使用%lf 并使用printf 打印double 值,您需要使用%f

由于这些函数的工作原理,它们不知道您实际传递给它们的参数的数量、类型或顺序——它们只会看到堆栈上的字节污泥或参数寄存器的海洋。他们知道他们应该期望什么参数的唯一方法是通过您在格式字符串中指定的内容。

%d 用于读取和打印int 类型,%c 用于单个字符,%s 用于字符串等。

【讨论】:

    【解决方案2】:

    尝试“%lf”而不是“%d”。 "%d" 需要一个整数,它与变量类型 "double" 冲突。

    【讨论】:

      【解决方案3】:

      变量类型double应该在scanf函数中使用%lf,在printf函数中使用%f

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-06-01
        • 2021-01-10
        • 2017-05-13
        • 2019-04-03
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多