格式控制字串完整語法
%[flags][width][.precision][length]specifier
旗標
| 旗標 | 說明 |
- | 左對齊(預設右對齊) |
0 | 寬度不足時前補 0(預設補空格) |
+ | 正數也顯示 + 號 |
| 正數前加空格 |
# | 替代格式(八進制加 0、十六進制加 0x、浮點數強制顯示小數點) |
寬度與精度
width:最小輸出字元寬度,不足補空格/0
.precision:- 整數:最小位數(前補 0)
- 浮點數:小數位數(預設 6)
- 字串:最大字元數(超過截斷)
長度修飾字
| 修飾字 | 對應型別 |
l | 長整數 long / 雙精度 double |
h | 短整數 short |
L | 長雙精度 long double |
型別指定字完整表
| 指定字 | 說明 | 範例輸出 |
d, i | 有號十進制整數 | %d → 42, %5d → 42 |
u | 無號十進制整數 | %u → 42 |
o | 八進制 | %o → 52, %#o → 052 |
x, X | 十六進制 (小寫/大寫) | %x → 2a, %#X → 0X2A |
f, F | 定點浮點數 | %.2f → 3.14 |
e, E | 科學記號 | %e → 3.141593e+00 |
g, G | 自動選 f 或 e(較短者),移除尾隨 0 | %g → 3.14159 |
c | 單一字元 | %c → A |
s | 字串 | %10s → hello, %-10s → hello |
p | 指標位址 | 0x7ffc1234 |
% | 輸出字面 % | %% → % |
字串格式化常用變體
%ms // 寬度 m,右對齊
%-ms // 寬度 m,左對齊
%m.ns // 寬度 m,取左側 n 字元,右對齊
%-m.ns // 寬度 m,取左側 n 字元,左對齊
輸出字面 %
printf("%f%%", 1/3); // 0.333333%
精度備註
float (單精度) 有效位數約 7 位
double (雙精度) 有效位數約 15-16 位
- PHP 內部浮點數皆為 double,
%f、%lf 效果相同