Сокращение «К» в отметке просмотров
В современном цифровом мире, где объем информации растет с угрожающей скоростью, важно представлять данные в удобном и доступном формате. Одним из наиболее распространенных решений для отображения больших чисел является сокращение с использованием буквы «К», что является аббревиатурой от слова «кило», означающего тысячу. Это упрощает восприятие информации пользователями, особенно в контексте отметок просмотров, лайков и подписчиков.
Пример использования
Допустим, у вас есть пост, который имеет 1200 просмотров. Вместо того чтобы отображать это число как «1200», вы можете использовать сокращение и представить его как «1.2К». Это не только экономит пространство на экране, но и делает данные более читабельными и привлекательными для пользователя.
Как это работает в коде
Создаем наше решение для реализации функции сокращения чисел, например, abbreviateNumber, идеально подходит для этой задачи. Оно не только обрабатывает различные значения, но и сохраняет необходимую точность с помощью параметра decimals. Вот несколько ключевых моментов вашей функции:
-
Универсальность: Функция может быть адаптирована для работы с разными суффиксами (такими как «M» для миллионов или «B» для миллиардов), что делает ее гибкой для различных сценариев.
-
Легкость понимания: Сокращение числа до формата «1.2К» позволяет пользователям легче воспринимать информацию. Это особенно важно для интерфейсов, где каждый пиксель на счету и необходимо эффективно использовать пространство.
-
Корректное форматирование: Функция учитывает количество десятичных знаков и может стирать незначащие нули, что еще больше улучшает визуальное представление.
Пишем две функции: abbreviateNumber и pluralizeTimes
function abbreviateNumber($value, int $decimals = 1, array $suffixes = ['K', 'M', 'B', 'T']): string
{
if ($value < 1000) {
return (string)$value; // ничего не сокращаем
}
// получаем порядок, кратный 1000
$order = (int)floor(log($value, 1000));
$order = min($order, count($suffixes)); // на случай ОЧЕНЬ больших чисел
$scaled = $value / (1000 ** $order);
$formatted = number_format($scaled, $decimals, '.', '');
// убираем лишнее
$formatted = rtrim(rtrim($formatted, '0'), '.');
return $formatted . $suffixes[$order - 1];
}
function pluralizeTimes(int $n): string
{
$n = abs($n) % 100;
$n1 = $n % 10;
if ($n > 10 && $n < 20) {
return 'раз';
}
if ($n1 > 1 && $n1 < 5) {
return 'раза';
}
if ($n1 == 1) {
return 'раз';
}
return 'раз';
}
$views = 12650;
echo abbreviateNumber($views) . ' ' . pluralizeTimes($views); // 12.7K раз
Функция abbreviateNumber
function abbreviateNumber($value, int $decimals = 1, array $suffixes = ['K', 'M', 'B', 'T']): string
Определение функции: Функция принимает три параметра:
$value: Числовое значение, которое нужно сократить.int $decimals: Количество знаков после запятой (по умолчанию 1).array $suffixes: Массив суффиксов для обозначения сокращённых значений, по умолчанию — ['K', 'M', 'B', 'T'].
if ($value < 1000) return (string)$value; // Ничего не сокращаем
Проверка на значение: Если $value меньше 1000, функция просто возвращает его в виде строки, без сокращений.
$order = (int)floor(log($value, 1000));
Определение порядка: log($value, 1000) вычисляет порядок числа в системе счисления с основанием 1000. floor округляет это значение вниз до ближайшего целого числа.
$order = min($order, count($suffixes)); // На случай ОЧЕНЬ больших чисел
Корректировка порядка: Учитывается количество доступных суффиксов, чтобы избежать выхода за пределы массива для очень больших чисел.
$scaled = $value / (1000 ** $order);
Масштабирование: Делим число на 1000 в степени порядка, чтобы получить новое значение, которое будет записано с суффиксом.
$formatted = number_format($scaled, $decimals, '.', '');
Форматирование: number_format используется для форматирования числа с заданным количеством десятичных знаков.
$formatted = rtrim(rtrim($formatted, '0'), '.');
Удаление лишних нулей: Убирает незначащие нули после запятой и лишнюю точку, если она остается.
return $formatted . $suffixes[$order - 1];
Возврат результата: Функция возвращает форматированное значение с соответствующим суффиксом.
Функция pluralizeTimes
function pluralizeTimes(int $n): string
Определение функции: Эта функция принимает целое число $n и возвращает строку с правильным склонением слова "раз".
$n = abs($n) % 100;
$n1 = $n % 10;
Нормализация числа: Сначала берем абсолютное значение $n, затем находим его остаток от деления на 100 и на 10. Это делается для правильной обработки склонений.
if ($n > 10 && $n < 20) {
return 'раз';
}
Правило для десятков: Если число находится в диапазоне от 11 до 19, форма слова должна быть "раз".
if ($n1 > 1 && $n1 < 5) {
return 'раза';
}
Правило для окончаний 2-4: Если последнее значение (единицы) от 2 до 4, используется форма "раза".
if ($n1 == 1) {
return 'раз';
}
Правило для окончания 1: Если число заканчивается на 1, то используется форма "раз".
return 'раз';
Заключение
Использование сокращения «К» для представления тысяч просмотров — это не только вопрос эстетики, но и функциональности. Ваш код предоставляет отличное решение для автоматизации этого процесса, делая его доступным и понятным для всех пользователей. Это решение можно легко интегрировать в различные веб-приложения, что повысит удобство общения пользователей с цифровым контентом. С применением такой практики можно значительно улучшить пользовательский опыт, уменьшив визуальную нагрузку и повысив эффективность восприятия информации.
Решение предоставляет удобные возможности для компактного отображения чисел в ясном формате, а также гарантирует правильное использование слов «раз» или «раза» в зависимости от контекста. Эти функции окажутся особенно полезными в различных приложениях, где важно корректное отображение больших чисел и соблюдение языковых норм.
Добавить комментарий или задать вопрос ツ
Комментариев нет