Have ideas to improve npm?Join in the discussion! »

    currency-formatter
    DefinitelyTyped icon, indicating that this package has TypeScript declarations provided by the separate @types/currency-formatter package

    1.5.7 • Public • Published

    Currency Formatter

    Build Status

    A simple Javascript utility that helps you to display currency properly

    STOP! You probably don't need this library

    TL;DR: This library was created a long time ago. You should use Internationalization API instead.

    Please don't add another dependency which you don't need. All modern browsers (and node.js) have this functionality built-in and do a much better job at formatting currencies. e.g. #57

    Example:

    new Intl.NumberFormat('en-US', { style: 'currency', currency: 'USD' }).format(100000000)
    // => "$100,000,000.00"
    
    new Intl.NumberFormat('en-US', { style: 'currency', currency: 'EUR' }).format(100000000)
    // => "€100,000,000.00"
    
    new Intl.NumberFormat('de-DE', { style: 'currency', currency: 'USD' }).format(100000000)
    // => "100.000.000,00 $"
    
    new Intl.NumberFormat('de-DE', { style: 'currency', currency: 'EUR' }).format(100000000)
    // => "100.000.000,00 €"
    
    new Intl.NumberFormat('fr-FR', { style: 'currency', currency: 'EUR' }).format(100000000)
    // => "100 000 000,00 €"

    With that being said use this library if you need:

    • Your version of node.js doesn't come with the full-icu. See: #72 and #19214
    • Support old browsers.
    • Consistent formatting across all browsers.
    • You don't like the Intl APIs
    • ???

    Install

    npm install currency-formatter --save

    Basic Usage

    By specifying the currency code

    var currencyFormatter = require('currency-formatter');
    
    currencyFormatter.format(1000000, { code: 'USD' });
    // => '$1,000,000.00'
    
    currencyFormatter.format(1000000, { code: 'GBP' });
    // => '£1,000,000.00'
    
    currencyFormatter.format(1000000, { code: 'EUR' });
    // => '1 000 000,00 €'

    Or by specifying the locale

    var currencyFormatter = require('currency-formatter');
    
    currencyFormatter.format(1000000, { locale: 'en-US' });
    // => '$1,000,000.00'
    
    currencyFormatter.format(1000000, { locale: 'en-GB' });
    // => '£1,000,000.00'
    
    currencyFormatter.format(1000000, { locale: 'GB' });
    // => '£1,000,000.00'
    
    currencyFormatter.format(1000000, { locale: 'de-DE' });
    // => '1.000.000,00 €'
    
    currencyFormatter.format(1000000, { locale: 'nl-NL' });
    // => '€1.000.000,00'

    You can also get the currency information.

    var currencyFormatter = require('currency-formatter');
    
    currencyFormatter.findCurrency('USD');
    // returns:
    // {
    //   code: 'USD',
    //   symbol: '$',
    //   thousandsSeparator: ',',
    //   decimalSeparator: '.',
    //   symbolOnLeft: true,
    //   spaceBetweenAmountAndSymbol: false,
    //   decimalDigits: 2
    // }

    Parse the number of a monetary value

    currencyFormatter.unformat('$10.5', { code: 'USD' })
    // => 10.5
    
    currencyFormatter.unformat('$1,000,000', { code: 'USD' })
    // => 1000000
    
    currencyFormatter.unformat('10,5 €', { code: 'EUR' })
    // => 10.5
    
    currencyFormatter.unformat('1 000 000,00 €', { code: 'EUR' })
    // => 1000000
    
    currencyFormatter.unformat('1.000,99', { locale: 'de-DE' })
    // => 1000.99
    
    currencyFormatter.unformat('10\'000 CHF', { code: 'CHF' })
    // => 10000
    
    currencyFormatter.unformat('10.00 CHF', { code: 'CHF' })
    // => 10
    
    currencyFormatter.unformat('10,00 CHF', { code: 'CHF' })
    // => 1000

    Advanced Usage

    Currency Formatter uses accounting library under the hood, and you can use its options to override the default behavior.

    var currencyFormatter = require('currency-formatter');
    currencyFormatter.format(1000000, {
      symbol: '@',
      decimal: '*',
      thousand: '^',
      precision: 1,
      format: '%v %s' // %s is the symbol and %v is the value
    });
    
    // => '1^000^000*0 @'
    
    // Different formatting for positive and negative values
    currencyFormatter.format(-10, {
      format: {
        pos: '%s%v' // %s is the symbol and %v is the value
        neg: '(%s%v)',
        zero: '%s%v'
      }
    });
    
    // => ($10)

    You could also get a list of all the currencies here using one of the following:

    var currencies = require('currency-formatter/currencies');
    // OR
    var currencyFormatter = require('currency-formatter');
    var currencies = currencyFormatter.currencies;

    Or the currencies in hashmap shape:

    var currencies = require('currency-formatter/currencies.json');
    // Result:
    // {
    //  "USD": {
    //    "code": "USD",
    //    "symbol": "$",
    //    "thousandsSeparator": ",",
    //    "decimalSeparator": ".",
    //    "symbolOnLeft": true,
    //    "spaceBetweenAmountAndSymbol": false,
    //    "decimalDigits": 2
    //  },
    //  ...more currencies
    // }

    License

    MIT

    Install

    npm i currency-formatter

    DownloadsWeekly Downloads

    61,228

    Version

    1.5.7

    License

    MIT

    Unpacked Size

    56.6 kB

    Total Files

    9

    Last publish

    Collaborators

    • avatar