На создание библиотеки для удобного форматирования чисел программиста и веб-дизайнера Адама Дрэйпера вдохновила аналогичная библиотека для даты и времени — moment.js. Numeral.js позволяет задавать число знаков после запятой, символы-разделители для дробной части и групп разрядов, формат представления валют, процентов, времени, аббревиатуры для миллионов, миллиардов, мегабайтов и т.п. Кроме того, можно восстанавливать числовые значения из существующего строкового представления. Библиотека распространяется под лицензией MIT.
Numeral работает в браузерах и под Node.js. Подключение библиотеки:
В браузере из cdnjs.com:
<script src="//cdnjs.cloudflare.com/ajax/libs/numeral.js/1.4.1/numeral.min.js"></script>
В Node.js:
npm install numeral
var numeral = require('numeral');
Использование:
var string = numeral(1000).format('0,0'); // '1,000'
Числа
Число | Формат | Строка |
---|---|---|
10000 | '0,0.0000' | 10,000.0000 |
10000.23 | '0,0' | 10,000 |
-10000 | '0,0.0' | -10,000.0 |
10000.1234 | '0.000' | 10000.123 |
10000.1234 | '0[.]00000' | 10000.12340 |
-10000 | '(0,0.0000)' | (10,000.0000) |
-0.23 | '.00' | -.23 |
-0.23 | '(.00)' | (.23) |
0.23 | '0.00000' | 0.23000 |
0.23 | '0.0[0000]' | 0.23 |
1230974 | '0.0a' | 1.2m |
1460 | '0 a' | 1 k |
-104000 | '0a' | -104k |
1 | '0o' | 1st |
52 | '0o' | 52nd |
23 | '0o' | 23rd |
100 | '0o' | 100th |
Валюта
Число | Формат | Строка |
---|---|---|
1000.234 | '$0,0.00' | $1,000.23 |
1000.2 | '0,0[.]00 $' | 1,000.20 $ |
1001 | '$ 0,0[.]00' | $ 1,001 |
-1000.234 | '($0,0)' | ($1,000) |
-1000.234 | '$0.00' | -$1000.23 |
1230974 | '($ 0.00 a)' | $ 1.23 m |
Байты
Число | Формат | Строка |
---|---|---|
100 | '0b' | 100B |
2048 | '0 b' | 2 KB |
7884486213 | '0.0b' | 7.3GB |
3467479682787 | '0.000 b' | 3.154 TB |
Проценты
Число | Формат | Строка |
---|---|---|
1 | '0%' | 100% |
0.974878234 | '0.000%' | 97.488% |
-0.43 | '0 %' | -43 % |
0.43 | '(0.000 %)' | 43.000 % |
Время
Число | Формат | Строка |
---|---|---|
25 | '00:00:00' | 0:00:25 |
238 | '00:00:00' | 0:03:58 |
63846 | '00:00:00' | 17:44:06 |
Расформатирование
var string = numeral().unformat('($10,000.00)'); // '-10000'
Строка | Функция | Число |
---|---|---|
'10,000.123' | .unformat('10,000.123') | 10000.123 |
'0.12345' | .unformat('0.12345') | 0.12345 |
'1.23m' | .unformat('1.23m') | 1230000 |
'23rd' | .unformat('23rd') | 23 |
'$10,000.00' | .unformat('$10,000.00') | 10000 |
'100B' | .unformat('100B') | 100 |
'3.154TB' | .unformat('3.154TB') | 3467859674006 |
'-76%' | .unformat('-76%') | -0.76 |
'2:23:57' | .unformat('2:23:57') | 8637 |
Арифметика
var number = numeral(1000);
var added = number.add(10); // 1010
До | Функция | После |
---|---|---|
1000 | .add(100) | 1100 |
1100 | .subtract(100) | 1000 |
1000 | .multiply(100) | 100000 |
100000 | .divide(100) | 1000 |
Форматирование нулевого значения
var number = numeral(0);
numeral.zeroFormat('N/A');
var zero = number.format('0.0') // 'N/A'
Работа с объектами number
Получение числового значения
var number = numeral(1000);
var string = number.format('0,0'); // '1,000'
var value = number.value(); // 1000
Установка значения
var number = numeral();
number.set(1000);
var value = number.value(); // 1000
Разность
var number = numeral(1000),
value = 100;
var difference = number.difference(value); // 900
Клонирование
var a = numeral(1000);
var b = numeral(a);
var c = a.clone();
var aVal = a.set(2000).value(); // 2000
var bVal = b.value(); // 1000
var cVal = c.add(10).value(); // 1010
Локализация
В библиотеку встроены базовые функции локализации. Уже есть рудиментарная поддержка русского языка.
// load a language
numeral.language('fr', {
delimiters: {
thousands: ' ',
decimal: ','
},
abbreviations: {
thousand: 'k',
million: 'm'
},
ordinal : function (number) {
return number === 1 ? 'er' : 'ème';
},
currency: {
symbol: '€'
}
});
// switch between languages
numeral.language('fr');
Ссылки
Автор: ilya42