我正在尝试使用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;
}
当我运行程序时,我得到以下输出:
# ./printf
When this number: -1243822529 is assigned to 2 db, it will be: 2-0.000000
为什么?
感谢。
答案 0 :(得分:113)
你想要的是%.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;
}
这将输出:
当这个数字:94.945600分配给2 dp时,它将是:94.95
有关printf格式选项的完整说明,请参阅此处:printf
答案 1 :(得分:6)
使用:"%.2f"
或其中的变体。
有关printf()
格式字符串的权威说明,请参阅POSIX规范。请注意,它将POSIX附加内容与核心C99规范分开。有一些C ++网站出现在谷歌搜索中,但有些网站至少有一个可疑的声誉,从其他地方的评论来看。
由于您使用C ++进行编码,因此您应该避免使用printf()
及其亲属。
答案 2 :(得分:4)
对于%d
部分,请参阅此How does this program work?,对于小数位,请使用%.2f
答案 3 :(得分:-2)
尝试使用%d。%02d
等格式int iAmount = 10050;
printf("The number with fake decimal point is %d.%02d", iAmount/100, iAmount%100);
另一种方法是在使用%f打印它之前将其转换为双精度:
printf("The number with fake decimal point is %0.2f", (double)(iAmount)/100);
我的2美分:)