小数点后两位使用printf()

我试图写一个数字到两位小数使用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 

这是为什么?

谢谢。

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

另外,你可能想用%freplace你的%d ;)

 #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

使用: "%.2f"或其变化。

有关printf()格式string的权威规范,请参阅POSIX规范。 请注意,它将POSIX附加function从核心C99规范中分离出来。 有一些C ++网站出现在Googlesearch中,但是至less有一些可疑的声誉,从SO的其他地方看到的评论来看。

既然你用C ++编码,你应该避免printf()及其亲属。

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

尝试使用像%d。%02d这样的格式

 int iAmount = 10050; printf("The number with fake decimal point is %d.%02d", iAmount/100, iAmount%100); 

另一种方法是在使用%f打印之前input它以加倍,如下所示:

 printf("The number with fake decimal point is %0.2f", (double)(iAmount)/100); 

我2美分:)