numfmt_format
funkcja
Formatuje liczbę całkowitą lub zmiennoprzecinkową do ciągu znaków zgodnie z ustawieniami lokalnymi obiektu NumberFormatter. Wymaga intl.
numfmt_format(NumberFormatter $formatter, int|float $num, int $type = NumberFormatter::TYPE_DEFAULT): string|false
numfmt_format zamienia liczbę na sformatowany ciąg znaków korzystając z reguł lokalizacji zapisanych w NumberFormatter. Zwraca false przy błędzie.
Opcjonalny parametr $type pozwala wymusić interpretację wartości:
| Stała | Opis |
|---|---|
| NumberFormatter::TYPE_DEFAULT | typ domyślny z formatera |
| NumberFormatter::TYPE_INT32 | 32-bitowa liczba całkowita |
| NumberFormatter::TYPE_INT64 | 64-bitowa liczba całkowita |
| NumberFormatter::TYPE_DOUBLE | zmiennoprzecinkowa |
Funkcja wymaga rozszerzenia intl. Do formatowania walutowego używaj numfmt_format_currency.
<?php
declare(strict_types=1);
$f = numfmt_create('pl_PL', NumberFormatter::DECIMAL);
echo numfmt_format($f, 1234.5); // 1 234,5 (separator tysięcy to U+00A0 — twarda spacja, nie zwykła ' ')
echo numfmt_format($f, 0.5); // 0,5
echo numfmt_format($f, 1000000); // 1 000 000
// Wymuszenie typu całkowitego (obcina część dziesiętną)
echo numfmt_format($f, 1234.9, NumberFormatter::TYPE_INT32); // 1 234
// Angielski formatter — inne konwencje
$en = numfmt_create('en_US', NumberFormatter::DECIMAL);
echo numfmt_format($en, 1234.5); // 1,234.5