-
-
Notifications
You must be signed in to change notification settings - Fork 0
Feature Numbers
github-actions[bot] edited this page Jul 16, 2026
·
1 revision
CloudCastle\Support\Num — числовые хелперы: форматирование с разделителями
разрядов, проценты, человекочитаемые размеры данных и сокращения больших чисел,
ограничение диапазоном, порядковые формы. Суперсет Illuminate\Support\Number,
но без обязательного ext-intl и на порядок быстрее (см. Сравнение).
-
format($number, $decimals, $decimalSeparator, $thousandsSeparator)— число с разделителями групп разрядов; дефолты — русская типографика (пробел и запятая). -
fileSize($bytes, $precision, $locale)— размер данных по двоичной шкале (1024) с русскими («Б»…«ПБ») или английскими («B»…«PB») единицами; целые значения выводятся без хвоста «,0». -
abbreviate($number, $precision)— сокращённая запись:1.3M,2B,3.5T. -
clamp($number, $min, $max)/between($number, $min, $max)— ограничение диапазоном и проверка принадлежности (границы включительно). -
percentOf($part, $total)— сколько процентов составляет часть (fail-safe: нулевое целое даёт0.0, а не деление на ноль);percentage($percent, $total)— значение процента от числа. -
ordinal($number, $language)— порядковая форма черезcloudcastle/inflector:1st/2nd(en),2-й(ru) — безext-intl. -
pad($number, $length)— дополнение нулями слева:007.
use CloudCastle\Support\Num;
use CloudCastle\Inflector\Language;
Num::format(1234567.891, 2); // '1 234 567,89' (русская типографика)
Num::format(1234567.891, 2, '.', ','); // '1,234,567.89'
Num::fileSize(1536); // '1,5 КБ'
Num::fileSize(1073741824, 1, 'en'); // '1 GB'
Num::abbreviate(1250000); // '1.3M'
Num::clamp(15, 1, 10); // 10
Num::between(5, 1, 10); // true
Num::percentOf(25, 200); // 12.5
Num::percentOf(5, 0); // 0.0 — fail-safe при пустой выборке
Num::ordinal(2); // '2nd'
Num::ordinal(2, Language::Russian); // '2-й'
Num::pad(7, 3); // '007'| Аспект | Num | illuminate Number |
|---|---|---|
Зависимость от ext-intl
|
❌ не нужна | ✅ обязательна |
| Русская шкала размеров («КБ», «МБ») | ✅ | ❌ |
Скорость format
|
~2.6M ops/s | ~54K ops/s |
| Порядковые формы ru | ✅ 2-й
|
❌ только en |
| fail-safe деление на ноль | ✅ 0.0
|
исключение |
-
percentOfс нулевым целым возвращает0.0— метрики пустой выборки не роняют обработчик. -
fileSizeнормализует отрицательный размер к нулю, неизвестная локаль откатывается на английскую шкалу — вывод стабилен на любом вводе.
CloudCastle Support · · PHP 8.1+
GitHub · Packagist · Releases · Discussions
Email · Telegram · VK · Сетка · 💜 Поддержать проект
Исходники Wiki — каталог wiki/ в репозитории (синхронизация через GitHub Actions)