这个问题与c编程有关。
/* program starts here.*/
main()
{
float n=792.099976;
printf("%f",n); /*output:-792.099976*/
printf("%5.2f",n); /*output:-792.10*/
printf("%6.2f",n); /*output:-792.10*/
printf("%6.1f",n); /*output:- 792.1*/
printf("%7.1f",n); /*output:- 792.1*/
printf("%3.1f",n); /*output:-792.1*/
}
/Program Ends here/
为什么会发生这种变化?
根据我所遵循的书,("%5.2f",n)
表示带有2个小数点的5位数。
但是当我更换' 5.2'与' 6.2' ,为什么我会得到相同的答案?
但是当我更换' 5.2'用' 6.1'为什么我要在它前面留出空间?
但是当我更换' 5.2'用' 7.1' ,为什么我前面有两个空格?
但是当我更换' 5.2'用' 3.1' ,为什么我得到相同的答案' 5.2'?
https://drive.google.com/file/d/0Bxb7Vv5kgAB5VF9PN2hkaVdOY3c/view?usp=sharing
链接在这里,我无法上传图片,因为它说我需要至少10个声誉。
答案 0 :(得分:1)
有关所有详细信息,请参阅printf手册页,但基本上,您误解了foramt说明符中的第一个数字。第一个数字是最小字段宽度(以字符为单位)。如果打印的数字少于此数字(不是数字,所以小数点和符号数!),它将用空格填充以填充这些字符。
所以当你使用' 5.2'或者' 6.2',数字使用6个字符,因此不进行填充。使用' 7.2'添加了一个空格填充字符。使用' 6.1'或者' 7.1',数字是5个字符,因此添加了一个或两个填充空格。