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');
    

    Ссылки


    Гитхаб. Официальный сайт.

    Поделиться публикацией
    AdBlock похитил этот баннер, но баннеры не зубы — отрастут

    Подробнее
    Реклама
    Комментарии 10
    • 0
      Спасибо!
      • 0
        А я в свое время пользовался accounting.js, тоже неплохая библиотека.
        • +2
          Это конечно круто: 10,000, но многим более привычно 10 000. Есть ли в этой библиотеке такая возможность?
          • +1
            Да. В русской локали в качестве разделителя групп разрядов указан пробел.
            • 0
              А оно использует локаль? Как?
        • 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)? Может я пропустил что-то?

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