printf()格式化输出函数
规定符:
%d 十进制有符号整数
%f 浮点数
说明:
(1). 可以在"%"和字母之间插进数字表示最大场宽。
例如: %3d 表示输出3位整型数, 不够3位右对齐。
(2). %9.2f 表示输出场宽为9的浮点数, 其中小数位为2, 整数位为7,
小数点占一位, 不够9位右对齐。
(3). %8s 表示输出8个字符的字符串, 不够8个字符右对齐。
注:I. 如果字符串的长度、或整型数位数超过说明的场宽, 将按其实际长度输出。
II. 但对浮点数, 若整数部分位数超过了说明的整数位宽度, 将按实际整数位输出;
III. 若小数部分位数超过了说明的小数位宽度, 则按说明的宽度以四舍五入输出。
IV. 另外, 若想在输出值前加一些0, 就应在场宽项前加个0。
例如: %04d 表示在输出一个小于4位的数值时, 将在前面补0使其总宽度为4位。
V. 如果用浮点数表示字符或整型量的输出格式, 小数点后的数字代表最大宽度,小数点前的数字代表最小宽度。
例如: %6.9s 表示显示一个长度不小于6且不大于9的字符串。若大于9, 则第9个字符以后的内容将被删除
(4). 可以控制输出左对齐或右对齐, 即在"%"和字母之间加入一个"-" 号可说明输出为左对齐, 否则为右对齐
例如: %-7d 表示输出7位整数左对齐,%-10s 表示输出10个字符左对齐。
%lf 是printf函数在输出 double 类型时用到的格式符。
使用 %lf 时,可以在 “%” 和 "lf" 之间指定要输出的 double 类型的【整个数字长度】和【小数部分部分】,他们之间用"."分开,这两部分可以任意一个或者两个都空着不写。
其中【整个数字长度】是包括,整数部分长度,小数部分长度(包括小数点,如有有小数部分的话)一共两个部分的。
例:
像下面这些写法都是合法的:
(1) %lf
(2) %.lf
(3) %10.lf
(4) %.10lf
(5) %10.10lf
(6) %10lf
如果【小数部分指定输出长度】为空(如2,3的情况),那么就会省略掉【小数部分】,只输出【整数部分】
如果【小数部分指定输出长度】缺省(如1,6的情况),那么输出6为小数,不足的部分用“0”补齐。
比如有数字123.45,使用“%10lf” ,小数部分的输出为:450000。整体输出123.450000
如果【小数部分指定输出长度】明确指定(如4,5情况),那么按指定的长度输出【小数部分】,不足部分用“0”补齐。
比如有数字123.45,使用“%.10lf” ,小数部分的输出为:4500000000。整体输出为123.4500000000
如果【整个数字的输出长度】( len_total)为空或缺省(如1,2,4的情况),那么会输出完整的整数部分。
如有数字 123456.78,使用 “%.f” 输出,那么整数部分的输出为:123456,实际输出长度为6。
如果【整个数字的输出长度】 明确指定(如3,5,6的情况) 。那么【整数部分的输出长度】分为分两种情况讨论:
1)
比如有数字 123.45 ,使用“%5.4lf”输出。最后输出:123.4500
2)
比如有数字 123.45 ,使用“%10.4lf”输出。也就是说整数部分输出长度为5,而整数部分的实际长度为3,所以要补充:5-3=2个空格进行补齐。
最后输出:" 123.4500"(1前面有两个空格)
最后:”%.0lf“就很容易理解了,输出的格式为:输出浮点数的整数部分,省略全部小数部分(以及小数点)。比如有数字 123.456,输出:123