使用printf()的两位小数

59 c c++ printf decimal

我正在尝试使用printf()以下方法将数字写入两位小数:

#include <cstdio>
int main()
{
  printf("When this number: %d is assigned to 2 dp, it will be: 2%f ", 94.9456, 94.9456);
  return 0;
}
Run Code Online (Sandbox Code Playgroud)

当我运行该程序时,我得到以下输出:

# ./printf
When this number: -1243822529 is assigned to 2 db, it will be: 2-0.000000
Run Code Online (Sandbox Code Playgroud)

这是为什么?

谢谢.

bad*_*err 123

你想要的%.2f不是2%f.

此外,您可能想要替换%d%f;)

#include <cstdio>
int main()
{
printf("When this number: %f is assigned to 2 dp, it will be: %.2f ", 94.9456, 94.9456);
return 0;
}
Run Code Online (Sandbox Code Playgroud)

这将输出:

当这个数字:94.945600分配给2 dp时,它将是:94.95

有关printf格式选项的完整说明,请参见此处: printf


Jon*_*ler 6

使用:"%.2f"或其变体.

有关格式字符串的权威规范,请参阅POSIX规范printf().请注意,它将POSIX附加内容与核心C99规范分开.有一些C++网站出现在谷歌搜索中,但至少有一些可疑的声誉,从其他地方的SO评论来看.

既然您使用C++进行编码,那么您应该避免使用printf()它的亲戚.


Roz*_*uur 5

有关%d部分,请参阅此程序如何工作?对于小数位使用%.2f