PHP中sprintf()函数%02.1f格式里02部分的含义咨询
关于PHP sprintf()中%02.1f里
02的解释 先把%02.1f拆解开逐个说明:
%:格式标记的起始符号0:指定当数字长度未达最小宽度时,用0填充补位(默认填充字符是空格)2:就是你疑惑的「最小宽度」——指格式化后的整个数字字符串(包含整数位、小数点、小数位)的总字符数,至少要达到2位。如果实际数字的字符数已经≥2,不会做补位;如果小于2,就用前面指定的0补够长度。.1:你已经了解的,保留1位小数f:表示要格式化的是浮点数
实际例子更直观:
因为你用的是.1f(保留1位小数),格式化后的数字至少是x.x的形式,总字符数为3(比如0.0、5.0),已经超过了2的最小宽度,所以在你的代码示例里,02不会触发补位效果。换个场景看补位的作用:
- 用
%02.0f(保留0位小数),传入数字5,格式化结果是05——5的字符长度是1,小于最小宽度2,所以用0补到2位。 - 用
%03.1f(最小宽度3,保留1位小数),传入数字5,格式化结果是5.0(长度刚好达标);传入0.5,结果是0.5(长度3)。 - 用
%04.1f(最小宽度4,保留1位小数),传入5.0,结果是05.0——总长度补到4位,前面加一个0。
简单总结:02里的2给格式化后的数字定了「最低字符数门槛」,0则规定了门槛不够时用0凑数,而非默认的空格。
内容的提问来源于stack exchange,提问作者gs3
相关产品推荐
相关产品推荐

