【问题标题】:Why does 5/2 results in '2' even when I use a float? [duplicate]为什么即使我使用浮点数,5/2 也会导致“2”? [复制]
【发布时间】:2017-03-08 22:51:15
【问题描述】:

我输入了以下代码(并且没有编译问题或任何问题):

float y = 5/2;
printf("%f\n", y);

输出很简单:2.00000

我的数学没有错吧?或者我在 / 运算符上错了?不是说分的意思吗? 5/2 应该等于 2.5?

非常感谢任何帮助!

【问题讨论】:

标签: c math floating-point precision division


【解决方案1】:

5int2int。因此,5/2 将使用整数除法。如果将5 替换为5.0f(或将2 替换为2.0f),将ints 之一设为float,您将获得浮点除法并得到您期望的2.5。您也可以通过显式转换分子或分母来达到相同的效果(例如((float) 5) / 2)。

【讨论】:

  • 5.2. 可以。
  • @alk:我只是喜欢把零放在那儿——它们没有任何实际用途,但由于我的视力衰退,我经常会想念.,但我还没有错过@987654337 @.
  • 我建议使用.00,因为你很可能有两只眼睛。 ;-)
  • @alk 谢谢你们! :D
【解决方案2】:

为什么即使我使用浮点数,5/2 的结果还是“2”?

因为你使用float”。 5/2 是整数除法。只有它的结果 (2) 被隐式转换为 float 以成为 2.(注意点)。

【讨论】:

    【解决方案3】:

    你应该做正确的类型转换。

    float y = (float) 5/2 
    

    程序会将数字视为int
    它将两个ints 分开并将其写入float。因此,答案是 2.0

    你必须输入 cast

    【讨论】:

      猜你喜欢
      • 2021-05-14
      • 2022-06-29
      • 2017-08-09
      • 2018-02-08
      • 1970-01-01
      • 2012-02-04
      • 1970-01-01
      • 2018-05-01
      • 1970-01-01
      相关资源
      最近更新 更多