【问题标题】:How can I print .10 instead of .1 in C? [duplicate]如何在 C 中打印 .10 而不是 .1? [复制]
【发布时间】:2019-09-20 22:28:21
【问题描述】:

我正在开发一个输出现金数量的小程序。无论是否存在值,我都希望它在末尾显示 2 个小数,以便 10 美分显示为 0.10 而不是 0.1。问题是,每当我最终执行printf("%0.3f", d); 时,它都会打印为 0.1。有什么办法可以解决这个问题,还是 C 就是这样?

【问题讨论】:

  • 热点提示:不要使用浮点数来表示货币。
  • %.2f 应该做你想做的事。
  • 当我使用%0.3f 时,我得到的是0.100,而不是0.1

标签: c


【解决方案1】:

Linux 系统有关于 C 标准库的非常好的文档,以手册页的形式编写。手册页也可以在 Internet 上找到。在您的情况下,您需要查看fprintf(3)

https://linux.die.net/man/3/fprintf

http://man7.org/linux/man-pages/man3/fprintf.3p.html

执行%f 转换时,精度控制小数点字符后的位数。在您的情况下,精度很可能是 0.2 而不是 0.3。

请注意,%g 转换以不同的方式理解精度。

手册页还提醒您必要的#include<stdio.h> 指令。如果有必要,它还会告诉您将程序链接到特定库。

【讨论】:

  • 这里和那里都没有,但我一直更喜欢man7.org 页面。您可以通过(简要地)解释在格式字符串(应用于浮点类型)中使用可选的 precision 来帮助提高答案的质量。这将有助于将您的答案从本质上是评论转变为实际答案 - 付出更多努力可能值得投赞成票。
  • 感谢您的意见,我已经扩展了我的答案。 (我也不是 die.net 的忠实粉丝,他们的可变宽度字体有点丑。)
  • 欢迎来到 StackOverflow。这一点点的努力会有很长的路要走。记住,当你回答时,你就扮演了老师的角色,我们都记得那些老师,他们只会把书递给你,然后说“它在这里……”——我们尽量不成为其中之一@ 987654328@
  • 不错,这样的老师已经太多了……谢谢你的建议!
猜你喜欢
  • 1970-01-01
  • 2011-04-22
  • 2019-06-03
  • 2021-08-17
  • 1970-01-01
  • 2012-01-10
  • 2019-08-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多