关于控制格式数值域宽的问题

大扣子 2011-08-20 10:23:43
#include <stdio.h>
main()
{float x=67.8564;
printf("%-10f",x);
}

输出结果是 67.856400空格


想不通的地方是:域宽设为10位,我觉的那就应该是67.856400空格空格啊,可是为什么输出结果只有一个空格补位呢,这才9个位啊,还差一个位啊。。。怎么回事?

请教一下前辈们。。
...全文
338 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
大扣子 2011-08-20
  • 打赏
  • 举报
回复
明天再结贴,之前发了个同样的帖子好多人都说不包括小数点,看来好多人都基础还不扎实。都瞅瞅,省的结贴就沉了。
大扣子 2011-08-20
  • 打赏
  • 举报
回复
做个试验:结果是不包括,比如:
#include <stdio.h>
main()
{float x=1.123456;
printf("%9faaa",x);
}
输出值为:空格1.123456aaa,算上小数点加上空格刚好为9位
域宽设为9

所以包括。

AnYidan 2011-08-20
  • 打赏
  • 举报
回复

int main()
{
float f = 1.123456;
int i = 1234567890;
printf("%10f\n%d\n", f, i);
system("pause");
}


看来包括小数点

在 the c programming Language

A number specifying a minimum field width. The converted argument will be printed in a field at least this wide, and wider if necessary.
ljhhh0123 2011-08-20
  • 打赏
  • 举报
回复
你认为的结果应该这样写:
#include <stdio.h>
main()
{float x=67.8564;
printf("%-2.8f",x);
}

具体请参考《C语言参考手册》第五版邱仲潘译,第283页。
CJacky++ 2011-08-20
  • 打赏
  • 举报
回复
果断结贴!!!
游戏设计师 2011-08-20
  • 打赏
  • 举报
回复
好吧,如果你认为.不算宽度的话我就不说什么了~
qq291180303 2011-08-20
  • 打赏
  • 举报
回复
额 。。。小数点其实也是算一个域宽的
大扣子 2011-08-20
  • 打赏
  • 举报
回复
域宽不包括小数点吧?
VCACC 2011-08-20
  • 打赏
  • 举报
回复
67.856400空格
这是9位?看来我小学还没毕业...

70,035

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧