【问题标题】:How to print fraction in C [duplicate]如何在C中打印分数[重复]
【发布时间】:2020-03-11 08:50:29
【问题描述】:

我在尝试用 C 打印分数时遇到问题。如何将分数打印为我在下面定义的数字。这是我的代码:

#include<stdio.h>
int main()
{
    printf("%.4f\n", 153/400);
    return 0;
}

任何帮助将不胜感激。

【问题讨论】:

标签: c fractions


【解决方案1】:

你现在做整数除法,只会得到整数。您必须执行浮点除法。您可以通过编写 400.0 而不是 400 或将操作数之一(或两者都强制)转换为 float (如 153/(float)400)轻松实现此目的。

编辑:正如@Erwan Daniel 正确指出的那样,您必须使用400.0f 才能拥有float 文字,因为默认情况下它将是双倍的。

【讨论】:

  • 400.0 会翻倍。由于 C 保持最精确的类型,所有的计算都将以双精度进行。正确的写法是400.f的400.0f,点是强制性的。
  • @ErwanDaniel 你是完全正确的。更正了它。谢谢。
  • float in vanadic args 被提示为double(自 c99/c+11 起)。另外intfloat 的转换可能会触发丢失精度警告,因为它实际上可能会丢失精度。在这里发float 毫无意义。
  • @ErwanDaniel:为什么使用float 而不是double?这个问题不要求它。
  • @EricPostpischil 没有人说要使用浮点数或双精度数。这只是为了表明 400.0 是双精度而不是浮点数,以避免任何混淆。但 AskoldIlvento 在你之前解释了为什么使用双精度而不是浮点数。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-07-20
  • 2015-12-31
  • 1970-01-01
  • 1970-01-01
  • 2021-03-11
相关资源
最近更新 更多