Current Location: Home> Latest Articles> How to Format Numbers with printf? A Complete Guide to PHP printf Number Formatting

How to Format Numbers with printf? A Complete Guide to PHP printf Number Formatting

gitbox 2025-09-29

2. Number Format Placeholders

2.1 Floating-Point %f

  • Defaults to 6 decimal places.

  • You can specify the number of decimal places, e.g., %.2f keeps 2 decimal places.

<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">"Pi: %.2f"</span></span><span>, </span><span><span class="hljs-variable">$pi</span></span><span>);
</span></span>

Output:

<span><span><span class="hljs-section">Pi: 3.14</span></span><span>
</span></span>

2.2 Integer %d

  • Used for outputting decimal integers.

  • You can specify a minimum width; spaces are added if the number is shorter.

<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">"Score: %5d"</span></span><span>, </span><span><span class="hljs-variable">$score</span></span><span>);
</span></span>

Output:

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

2.3 Hexadecimal %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">"Hexadecimal: %x"</span></span><span>, </span><span><span class="hljs-variable">$number</span></span><span>);
</span></span>

Output:

<span><span><span class="hljs-section">Hexadecimal: ff</span></span><span>
</span></span>

Using %X will output uppercase letters.

2.4 Octal %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">"Octal: %o"</span></span><span>, </span><span><span class="hljs-variable">$number</span></span><span>);
</span></span>

Output:

<span><span><span class="hljs-section">Octal: 10</span></span><span>
</span></span>

3. Width and Alignment

  • %10d: Width 10, right-aligned.

  • %-10d: Width 10, left-aligned.

  • %010d: Width 10, pad with zeros on the left.

<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">// Right-aligned</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">// Left-aligned</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">// Pad with zeros</span></span><span>
</span></span>

Output:

<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. Thousand Separators

PHP's printf does not directly support thousand separators, but you can use number_format with 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">"Amount: %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>

Output:

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