當前位置: 首頁> 最新文章列表> 如何用printf格式化輸出數字?一文搞懂PHP printf函數的數字格式化方法

如何用printf格式化輸出數字?一文搞懂PHP printf函數的數字格式化方法

gitbox 2025-09-29

2. 數字格式化佔位符

2.1 浮點數%f

  • 默認保留6位小數。

  • 可以指定小數位,例如%.2f表示保留2位小數。

 <span><span><span class="hljs-variable">$pi</span></span><span> = </span><span><span class="hljs-number">3.14159</span></span><span>;
</span><span><span class="hljs-title function_ invoke__">printf</span></span><span>(</span><span><span class="hljs-string">"圓周率: %.2f"</span></span><span>, </span><span><span class="hljs-variable">$pi</span></span><span>);
</span></span>

輸出:

 <span><span><span class="hljs-section">圓周率: 3.14</span></span><span>
</span></span>

2.2 整數%d

  • 用於輸出十進制整數。

  • 可以指定最小寬度,數字不足則自動補空格。

 <span><span><span class="hljs-variable">$score</span></span><span> = </span><span><span class="hljs-number">95</span></span><span>;
</span><span><span class="hljs-title function_ invoke__">printf</span></span><span>(</span><span><span class="hljs-string">"分數: %5d"</span></span><span>, </span><span><span class="hljs-variable">$score</span></span><span>);
</span></span>

輸出:

 <span><span><span class="hljs-section">分數:    95</span></span><span>
</span></span>

2.3 十六進制%x / %X

 <span><span><span class="hljs-variable">$number</span></span><span> = </span><span><span class="hljs-number">255</span></span><span>;
</span><span><span class="hljs-title function_ invoke__">printf</span></span><span>(</span><span><span class="hljs-string">"十六進位: %x"</span></span><span>, </span><span><span class="hljs-variable">$number</span></span><span>);
</span></span>

輸出:

 <span><span><span class="hljs-section">十六進位: ff</span></span><span>
</span></span>

如果使用%X ,字母會大寫。

2.4 八進制%o

 <span><span><span class="hljs-variable">$number</span></span><span> = </span><span><span class="hljs-number">8</span></span><span>;
</span><span><span class="hljs-title function_ invoke__">printf</span></span><span>(</span><span><span class="hljs-string">"八進制: %o"</span></span><span>, </span><span><span class="hljs-variable">$number</span></span><span>);
</span></span>

輸出:

 <span><span><span class="hljs-section">八進制: 10</span></span><span>
</span></span>

3. 寬度和對齊

  • %10d :寬度10,右對齊。

  • %-10d :寬度10,左對齊。

  • %010d :寬度10,左邊補0。

 <span><span><span class="hljs-variable">$num</span></span><span> = </span><span><span class="hljs-number">42</span></span><span>;
</span><span><span class="hljs-title function_ invoke__">printf</span></span><span>(</span><span><span class="hljs-string">"[%10d]\n"</span></span><span>, </span><span><span class="hljs-variable">$num</span></span><span>);  </span><span><span class="hljs-comment">// 右對齊</span></span><span>
</span><span><span class="hljs-title function_ invoke__">printf</span></span><span>(</span><span><span class="hljs-string">"[%-10d]\n"</span></span><span>, </span><span><span class="hljs-variable">$num</span></span><span>); </span><span><span class="hljs-comment">// 左對齊</span></span><span>
</span><span><span class="hljs-title function_ invoke__">printf</span></span><span>(</span><span><span class="hljs-string">"[%010d]\n"</span></span><span>, </span><span><span class="hljs-variable">$num</span></span><span>); </span><span><span class="hljs-comment">// 左邊補0</span></span><span>
</span></span>

輸出:

 <span><span><span class="hljs-selector-attr">[        42]</span></span><span>
</span><span><span class="hljs-selector-attr">[42        ]</span></span><span>
</span><span><span class="hljs-selector-attr">[0000000042]</span></span><span>
</span></span>

4. 數字千位分隔符

PHP本身的printf不直接支持千位分隔符,但可以使用number_format配合printf

 <span><span><span class="hljs-variable">$number</span></span><span> = </span><span><span class="hljs-number">1234567.89</span></span><span>;
</span><span><span class="hljs-title function_ invoke__">printf</span></span><span>(</span><span><span class="hljs-string">"金額: %s"</span></span><span>, </span><span><span class="hljs-title function_ invoke__">number_format</span></span><span>(</span><span><span class="hljs-variable">$number</span></span><span>, </span><span><span class="hljs-number">2</span></span><span>));
</span></span>

輸出:

 <span><span><span class="hljs-section">金額: 1,234,567.89</span></span><span>
</span></span>