【问题标题】:When dividing into a small negative number I just get 0当除以一个小的负数时,我只得到 0
【发布时间】:2014-05-29 01:23:45
【问题描述】:

在我当前的程序中,我遇到了一个问题,当我将一个数字除以一个更大的数字时,我只会得到 0。例如,如果我将 -272 除以 400,我会得到 0。

y=x/400;
printf("%f\n", y);

这是唯一导致问题的代码。 x 为 1-500 的负整数,y 初始化为浮点数。

我哪里错了?

【问题讨论】:

  • 请出示x和y的声明
  • 您需要将x 转换为float 或除以400.0
  • 如果我有一个硬币用于预期作为浮点数工作的每个 int 算术运算......
  • @ChrisO 谢谢,问题已解决。
  • 我涵盖了您的问题以及您可能应该在此处了解的更多情况:devproconnections.com/development/… -- 这篇文章是关于 C#,但也适用于 C 和许多其他语言。

标签: c floating-point int printf type-conversion


【解决方案1】:

这样写 y = x/400.0f 或 y = (float)x / 400

【讨论】:

    【解决方案2】:

    除法运算根据操作数推导出结果。如果两个操作数都是int,那么结果就是int。在您的情况下,x400 都是 int,所以 / 的结果是 int。然后这个int 被转换为float,因为y 是浮点数,但结果已经被截断为int

    您需要将至少一个操作数转换为浮点数:

    y = (float) x / 400;
    

    y = x / 400.0f
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-02-19
      • 1970-01-01
      • 1970-01-01
      • 2021-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-15
      相关资源
      最近更新 更多