full stack javascript developer
0,0
рейтинг
20 декабря 2012 в 15:34

Разработка → Numeral.js — библиотека для форматирования чисел

На создание библиотеки для удобного форматирования чисел программиста и веб-дизайнера Адама Дрэйпера вдохновила аналогичная библиотека для даты и времени — 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
карма
526,7
рейтинг 0,0
full stack javascript developer
Реклама помогает поддерживать и развивать наши сервисы

Подробнее
Спецпроект

Самое читаемое Разработка

Комментарии (10)

  • 0
    Спасибо!
  • 0
    А я в свое время пользовался accounting.js, тоже неплохая библиотека.
  • +2
    Это конечно круто: 10,000, но многим более привычно 10 000. Есть ли в этой библиотеке такая возможность?
    • +1
      Да. В русской локали в качестве разделителя групп разрядов указан пробел.
      • 0
        А оно использует локаль? Как?
        • +2
          я тормоз.
  • 0
    var a = numeral(1000);
    var c = a.clone(); или var c = a;

    в чем фишка (clone())?
    • 0
      уже увидел )

      clone: function () {
      return numeral(this);
      },
  • 0
    Есть ещё плагин к jQuery от Микрософт — Globalization.
  • 0
    А через него можно выводить число в научном виде (e.g. 4,324 x 10^11)? Может я пропустил что-то?

Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.