Мозг человека это один из загадочных даров природы, над которым уже много лет работают ученные, пытаясь узнать больше о принципах его работы. Благодаря ученным стало известно, что для восприятия информации у человека существуют несколько каналов: визуальный (60%), аудиальный (30%), смысловой (10%). Визуальное восприятие у здорового человека преимущественно преобладает над другими каналами. Наши глаза в этом случае играют главную роль.
В сайтостроении можно выделить отдельную область как науку, которая занимается изучением более продуктивных техник передачи информации пользователям сайта, в кругу просвещенных это определение трактуется как «юзабилити». Тема «юзабилизи» весьма широка, и в данной статье мы поговорим о числах, точнее об одном интересном способе их предоставления конечному пользователю.
Способ визуальной передачи информации для человека, а конкретнее, для комфортного восприятия чисел человеком играют немаловажную роль. Особенно это важно для различных торговых площадок, интернет-магазинов и т.д.
Иногда большие числа следует разделять пробелом, это позволит глазам человека быстрее прочитать значение величины.
Для примера приведу два способа представления величин,
первый – 1990132, второй — 1 990 132.
Можно заметить, что, второй способ читается легче. Числовые значения могут символизировать цены, количество, или любую другую информацию, предназначенную для визуального понимания величины.
Привести значение числа к такому виду несложно, это можно сделать как на стороне браузера пользователя, так и на стороне сервера. Мы рассмотрим примеры функций для обоих вариантов.
Первый вариант, это функция на javascript:
function partition_numbers(number){
number = number + '';
numLen = number.length;
if (numLen> 3){
i = numLen;
strNum = '';
three = 0;
while (i != 0){
i--;
three++;
if (three == 3){
strNum = (i != 0 ? " " : '') + number[i] + strNum;
three = 0;
} else strNum = number[i] + strNum;
}
number = strNum;
}
return number;
}
Пробуем передать некую величину этой функции:
document.write(partition_numbers(9540000));
На выходе получаем:
9 540 000
Итак, получилось, теперь пробуем проделать это дело на стороне сервера. Для этого мы воспользуемся несложной функцией на PHP.
function partition_numbers($number){
$number = (string)($number);
$numLen = strlen($number);
if ($numLen > 3){
$i = $numLen;
$strNum = '';
$three = 0;
while ($i != 0){
$i--;
$three++;
if ($three == 3){
$strNum = ($i != 0 ? " " : '').$number[$i].$strNum;
$three = 0;
} else $strNum = $number[$i].$strNum;
}
$number = $strNum;
}
return $number;
}
Обращаемся к функции:
echo partition_numbers(8450990);
На выходе получаем:
8 450 990
Сработало, функция возвратила результат в нужном виде. Код функции, описанный выше, приведен для демонстрации, однако при желании вы можете свободно использовать их в своих проектах, он работоспособен.
Обратите внимание, что в функции нет проверки входного параметра на принадлежность к числовому типу, в виду её не математического целевого назначения, иными словами, для визуального представления. Это позволяет передавать числовые значения любой длины, после чего они преобразуются в строковый тип.
Не стоит так извращаться, все гораздо проще:
function partition_numbers(number){
return number.replace(/(\d)(?=(\d{3})+(?!\d))/g, "$1 ");
}