1.5.9 • Published 4 years ago

currency-formatter v1.5.9

Weekly downloads
58,639
License
MIT
Repository
github
Last release
4 years ago

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

base-export@pronto-development/pronto-componentswiz-ng-libdirectpay-cardpayment@everreal/er-common-helpers@thesis-co/mechamittens-extensionpg-api-servergate-backend@crystaldesign/diva-storyant-nodejs-kit@infinitebrahmanuniverse/nolb-curlukes-redux-tree@everything-registry/sub-chunk-1426@bonanzainteractive/detectdevices_timer_tween7xui-prowallet-appvue-invoicesvc-promo@conveyal/commute@bonanzainteractive/core_1@bonanzainteractive/slote_core@bonanzainteractive/coreeverest-native-shellirie-utilsjackal-base-exportjackal-gamebase-exportkitado-jslc-js-common@beatdown/r2d2merchant-dashboardspidergraphstock-crypto-monitortinyformatterultradatamanagertrailpack-proxy-cartutil01tween_timer_core@antscorp/antsomi-ui@ci24/ci-billing-sqlserver@ci24/ci-liquidate-service@cerezagroup/utils@boostedhuman/formatters@dibs-tech/modelsuno-serverless-handlebarsuno-serverless-nunjucksurcli@finalytic/queue@finalytic/sdk@finalytic/utils@firestark/input@edenjs/shop@grupor5/utils@hello-charles/json-logic@findify/ui-components@front10/car-dealership-book@laverna_ritchie5/wallet@macellan/formatter@mechamittens/ui@mechamittens/extension@needish/qoopit-ui-components@fabrix/spool-cart@jsweb001/company_profile_light_blue_theme@kenyip/react-native-currency-input@sandboxcommerceeng/react@openreceipt/currency@nuskin/cart-sdk@ott_test/itinerary-bodymystashnanoposotp-react-reduxpaklek-clireact-currency-number-formatreact-input-kitinrevoicequinvoicesneaker_calculatorgroundwork.jsleumi-climatic-kitlokagen-v2mail-text-processorluxury-escapeskresus@wework/occupancy-map-components@wework/inventory-manager-components@wbuilder/utils@tillhub/datatable@tillhub/vue-table-page@underdogio/pupawesome-prettyasksuite-corecerebro-npm-testcents-to-currencycalcloanci-ppa-business-logicci-ppa-businss-logiccarteracoinchartscoldsnap-utilitiescomponents-base
1.5.9

4 years ago

1.5.8

4 years ago

1.5.7

4 years ago

1.5.6

5 years ago

1.5.5

6 years ago

1.5.4

6 years ago

1.5.3

7 years ago

1.5.2

7 years ago

1.5.1

7 years ago

1.5.0

7 years ago

1.4.5

7 years ago

1.4.4

7 years ago

1.4.3

7 years ago

1.4.2

8 years ago

1.4.1

8 years ago

1.4.0

8 years ago

1.3.2

8 years ago

1.3.1

8 years ago

1.3.0

8 years ago

1.2.1

8 years ago

1.2.0

8 years ago

1.1.1

9 years ago

1.1.0

9 years ago

1.0.8

9 years ago

1.0.7

9 years ago

1.0.6

9 years ago

1.0.5

9 years ago

1.0.4

9 years ago

1.0.3

9 years ago

1.0.2

9 years ago

1.0.1

9 years ago

1.0.0

10 years ago

0.0.8

10 years ago

0.0.7

10 years ago

0.0.6

10 years ago

0.0.5

10 years ago

0.0.4

10 years ago

0.0.3

10 years ago

0.0.2

10 years ago

0.0.1

10 years ago