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

猜你喜欢

转载自blog.csdn.net/wcxyky/article/details/89743139