Number
Number
Numeric formatting helpers. Namespace Zero\Lib\Support\Number (aliased as Number).
use Zero\Lib\Support\Number;When the intl extension is available, locale-aware formatting via NumberFormatter is used; otherwise a native PHP fallback applies.
Implementation: Number.php.
format(int|float $number, int $precision = 0, ?int $maxPrecision = null, ?string $locale = null): string
Number::format(1234567); // '1,234,567'
Number::format(1234.5678, 2); // '1,234.57'
Number::format(1234.5, 0, 2); // '1,234.5'spell(int|float $number, ?string $locale = null): string
Spell out the number. Requires intl.
Number::spell(5); // 'five'
Number::spell(42); // 'forty-two'ordinal(int $number, ?string $locale = null): string
Number::ordinal(1); // '1st'
Number::ordinal(2); // '2nd'
Number::ordinal(3); // '3rd'
Number::ordinal(11); // '11th'
Number::ordinal(22); // '22nd'percentage(int|float $number, int $precision = 0, ?int $maxPrecision = null, ?string $locale = null): string
Number::percentage(50); // '50%'
Number::percentage(33.5, 1); // '33.5%'currency(int|float $number, string $currency = 'USD', ?string $locale = null): string
Locale-dependent formatting.
Number::currency(1234.56, 'USD'); // '$1,234.56'
Number::currency(1234.56, 'EUR', 'de_DE'); // '1.234,56 €'fileSize(int|float $bytes, int $precision = 0, ?int $maxPrecision = null): string
Number::fileSize(500); // '500 B'
Number::fileSize(2048); // '2 KB'
Number::fileSize(1024 * 1024 * 1.5, 1, 1); // '1.5 MB'forHumans(int|float $number, int $precision = 0, ?int $maxPrecision = null, bool $abbreviate = false): string
Human-readable order of magnitude.
Number::forHumans(1500); // '2 thousand'
Number::forHumans(1500000); // '2 million'
Number::forHumans(1500, 1, 1); // '1.5 thousand'abbreviate(int|float $number, int $precision = 0, ?int $maxPrecision = null): string
Abbreviated suffix variant.
Number::abbreviate(1500); // '2K'
Number::abbreviate(1500, 1, 1); // '1.5K'
Number::abbreviate(2_500_000); // '3M'pairs(int|float $to, int|float $by, int|float $offset = 1): array
Build numeric ranges in chunks.
Number::pairs(10, 5); // [[1, 5], [6, 10]]
Number::pairs(25, 10); // [[1, 10], [11, 20], [21, 25]]trim(int|float $number): int|float
Strip trailing zeros from a float.
Number::trim(5); // 5
Number::trim(5.10); // 5.1
Number::trim(5.00); // 5clamp(int|float $number, int|float $min, int|float $max): int|float
Number::clamp(15, 1, 10); // 10
Number::clamp(-5, 0, 10); // 0
Number::clamp(5, 0, 10); // 5