格式化字符串sprintf的"填空字元" 不清楚啊
<?php //格式化字符串 $str?=?'100.1'; $result?=?sprintf('%18.3f',?$str); echo?$result;
我把0改成1并沒(méi)有在不足的地方填上1,而是在前面多了5個(gè)空格,把0改成2 前面多了15個(gè)空格,請(qǐng)問(wèn)什么情況?謝謝
<?php //格式化字符串 $str?=?'100.1'; $result?=?sprintf('%18.3f',?$str); echo?$result;
我把0改成1并沒(méi)有在不足的地方填上1,而是在前面多了5個(gè)空格,把0改成2 前面多了15個(gè)空格,請(qǐng)問(wèn)什么情況?謝謝
2016-11-22
舉報(bào)
2016-11-22
1、這個(gè) % 符號(hào)是開(kāi)始的意思,寫(xiě)在最前面表示指定格式開(kāi)始了。 也就是 "起始字符", 直到出現(xiàn) "轉(zhuǎn)換字符" 為止,就算格式終止。
2、跟在 % 符號(hào)后面的是 0, 是 "填空字元" ,表示如果位置空著就用0來(lái)填滿。
3、在 0 后面的是1,這個(gè) 1 是規(guī)定整個(gè)所有的字符串占位要有1位以上(小數(shù)點(diǎn)也算一個(gè)占位)。
??? 如果把 1 改成 6,則 $result的值將為 099.90
??? 因?yàn)椋谛?shù)點(diǎn)后面必須是兩位,99.90一共5個(gè)占位,現(xiàn)在需要6個(gè)占位,所以用0來(lái)填滿。
4、在 %01 后面的 .2 (點(diǎn)2) 就很好理解了,它的意思是,小數(shù)點(diǎn)后的數(shù)字必須占2位。 如果這時(shí)候,$str 的值為9.234,則 $result的值將為9.23.
??? 為什么4 不見(jiàn)了呢? 因?yàn)樵谛?shù)點(diǎn)后面,按照上面的規(guī)定,必須且僅能占2位。 可是 $str 的值中,小數(shù)點(diǎn)后面占了3位,所以,尾數(shù)4被去掉了,只剩下 23。
5、最后,以 f "轉(zhuǎn)換字符" 結(jié)尾。
2016-12-08
這個(gè)要理解,意思就是那個(gè)呀