【问题标题】:printf for C %f leaving 6 0's after decimalprintf for C %f 在小数点后留下 6 个 0
【发布时间】:2012-11-15 23:44:34
【问题描述】:
int main ()
{
float MarysAge;

MarysAge = (int) 19.32;
printf("Mary is %f years old\n", MarysAge);

return 0;
}

为什么这个输出的末尾有 6 个 0?试图帮助一个朋友,但我不太了解 C,任何帮助表示赞赏 =)。

输出 = 玛丽 19.000000 岁

【问题讨论】:

  • 我猜这是默认设置。你到底想要多少?
  • 不确定我得问我朋友想要多少...我认为他们更多地只是在寻找为什么有这么多 0 的哈哈
  • 嗯,你可以看看reference 了解如何更改精度。
  • 感谢参考帮助了很多 =)

标签: c formatting printf


【解决方案1】:

我看错了你的问题。

位数可以控制如下...

printf("Mary is %.2f years old\n", MarysAge);

【讨论】:

  • 就其本身而言,“使用 %d 而不是 %f”这句话可能被解释为“使用 printf("Mary is %d years old\n", MarysAge);,其中 MarysAge 的类型为 float。这不是一个很好的建议。
  • @PascalCuoq 同意。重新阅读问题后,我重新回答了:)
【解决方案2】:

%f 的默认精度为 6,点后输出 6 个数字。 和 (int) 向下舍入。 第一个 19.32 在 (int) 上变成 19, 然后在 %f 上变为 19.000000。

【讨论】:

    猜你喜欢
    • 2011-06-14
    • 2020-09-26
    • 2019-08-31
    • 1970-01-01
    • 2020-09-11
    • 2020-05-23
    • 1970-01-01
    • 1970-01-01
    • 2020-10-27
    相关资源
    最近更新 更多