小数点后两位使用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
。
另外,你可能想用%f
replace你的%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美分:)