最近偶然翻开CPP的第三章,给出的示例程序如下:
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main(void)
{
float weight;
float value;
printf("Are you worth your weight in your platfrom?\n");
printf("Let's check it out.\n");
printf("Please enter your weight in pounds:");
scanf("%f",&weight);
value = 1700.0 * weight * 14.5833;
printf("Your weight in platform is worth $%.2f.\n",value);
//The difference between %2f and %.2f is
printf("You are easily worth that!If platform prices drop,\n");
printf("eat more to maintain your value.\n");
getchar();
return 0;
}
printf("Your weight in platform is worth $%.2f.\n",value);
直接划重点,也就是这一句中的%.2f不太明白具体输出的格式,于是自己在devC上面做了个简单的实验,实验代码如下:
#include <stdio.h>
int main()
{
float a, b, c, d;
a = 2.333;
b = 23.333;
c = 233.333;
d = 2333.3333;
printf("%2f,\n%.2f,\n%6f,\n%.6f,\n%5f,\n%.5f\n", a, a, a, a, a, a);
printf("%2.3f,\n%2.4f,\n%2.6f\n", a, a, a);
printf("%2f\n%2.3f\n",c,d);
getchar();
return 0;
}
输出如下:
2.333000,
2.33,
2.333000,
2.333000,
2.333000,
2.33300
2.333,
2.3330,
2.333000
233.332993
2333.333
可以看到,小数点存在的话,左侧的数字限制会被实际数字长度突破,右侧数字限定小数点后的数字位数