我喜欢这个程序:
printf("%.2d", 5);
我认为它应该只显示:5
但显示:05
。你能解释一下它是如何运作的吗?
答案 0 :(得分:3)
它被称为精度修饰符,写为.number
,并且对于不同的转换说明符具有略微不同的含义
对于浮点数(例如%f),它控制小数点后打印的位数:
printf( "%.3f", 1.2 );
将打印:
1.200
如果提供的数字比给定的数字更精确,它将会舍入。例如:
printf( "%.3f", 1.2348 );
将打印:
1.235
对于g和G,它将控制显示的有效数字的数量。这不仅会影响小数点后的值,还会影响整数。
printf( "%.3f\n%.3g\n%.3f\n%.3g\n", 100.2, 100.2, 3.1415926, 3.1415926 );
将打印:
100.200 // %.3f, putting 3 decimal places always
100 // %.3g, putting 3 significant figures
3.142 // %.3f, putting 3 decimal places again
3.14 // %.3g, putting 3 significant figures
另一方面,对于整数,它控制打印的最小位数的精度:
printf( "%.3d", 10 );
将打印:
010
最后,对于字符串,精度控制显示的字符串的最大长度:
printf( "%.5s\n", "abcdefg" );
将打印:
abcde
答案 1 :(得分:0)
2
中的"%.2d"
表示您要打印至少2位数字。同样,如果您想打印至少3位数字,可以使用"%.3d"
。如果你不想要额外的数字(即没有填充0和#),你可以单独使用"%d"
。
Man pages是你最好的朋友