What is accounting?
The accounting npm package is a lightweight JavaScript library for number, money, and currency formatting. It provides simple and easy-to-use methods for formatting numbers, currencies, and handling various financial calculations.
What are accounting's main functionalities?
Number Formatting
This feature allows you to format numbers with thousand separators and decimal points. The formatNumber method takes a number and returns it as a string formatted with commas as thousand separators.
const accounting = require('accounting');
const formattedNumber = accounting.formatNumber(1234567.89);
console.log(formattedNumber); // '1,234,567.89'
Currency Formatting
This feature allows you to format numbers as currency. The formatMoney method takes a number and returns it as a string formatted as currency, including the currency symbol and proper decimal places.
const accounting = require('accounting');
const formattedCurrency = accounting.formatMoney(1234567.89);
console.log(formattedCurrency); // '$1,234,567.89'
Unformatting Numbers
This feature allows you to convert formatted numbers or currency strings back into plain numbers. The unformat method takes a formatted string and returns it as a number.
const accounting = require('accounting');
const number = accounting.unformat('$1,234,567.89');
console.log(number); // 1234567.89
Other packages similar to accounting
numeral
Numeral.js is a library for formatting and manipulating numbers. It provides similar functionality to accounting, such as number formatting, currency formatting, and unformatting. However, Numeral.js offers more customization options and supports a wider range of number formats.
currency.js
Currency.js is a library specifically designed for handling currency values. It provides methods for formatting, parsing, and manipulating currency values. Compared to accounting, currency.js offers more robust handling of currency-specific operations and better precision for financial calculations.
dinero.js
Dinero.js is a library for creating, calculating, and formatting monetary values in JavaScript. It provides a comprehensive set of tools for handling money, including arithmetic operations, formatting, and currency conversion. Dinero.js is more feature-rich compared to accounting and is designed to handle complex financial scenarios.
accounting.js is a tiny JavaScript library for number, money and currency parsing/formatting. It's lightweight, fully localisable, has no dependencies, and works great client-side or server-side. Use standalone or as a nodeJS/npm and AMD/requireJS module.
Visit the plugin homepage for demos and documentation: http://openexchangerates.github.io/accounting.js/
Please checkout or download the latest stable tag before using in production. Bug reports and pull requests are welcome.
Maintained by Open Exchange Rates and originally by @josscrowcroft and other contributors.
Works great with:
- money.js - a tiny (1kb) standalone JavaScript currency conversion library, for web & nodeJS
- Open Exchange Rates - the free currency conversion data API
Changelog
v0.4.1 - Alias accounting.formatNumber()
as accounting.format()
v0.4 - Transferred repository to Open Exchange Rates for ongoing maintenance
v0.3.2 - Fixed package.json dependencies (should be empty object)
v0.3.0
- Rewrote library structure similar to underscore.js for use as a nodeJS/npm and AMD module. Use
npm install accounting
and then var accounting = require("accounting");
in your nodeJS scripts. - Also works with requireJS or any AMD module loader.
- unformat now only attempts to parse the number if it's not already a valid number.
acounting.unformat
now also aliased as acounting.parse
- Fixed an IE bug in the
defaults
method
v0.2.2 - Fixed same issue as #Num: #24 in formatNumber; switch to Google Closure Compiler for minified version.
v0.2.1 - Fixed issue #Num: #24 (locally-defined settings object was being modified by formatMoney)
v0.2
- Rewrote formatting system for formatMoney and formatColumn for better control of string output
- Now supports separate formats for negative and zero values (optionally) via
accounting.settings.currency.format
- Internal improvements and helper methods
v0.1.4
- formatMoney recursively formats arrays
- Added Jasmine test suite (thanks to millermedeiros) and QUnit functionality/speed tests
v0.1.3
- Added configurable settings object for default formatting parameters.
- Added
format
parameter to control symbol and value position (default "%s%v"
, or [symbol][value]) - Methods consistently accept object as 2nd parameter, matching/overriding the library defaults
v0.1.2
- formatColumn works recursively on nested arrays (e.g.
accounting.formatColumn( [[1,12,123,1234], [1234,123,12,1]] )
, returns matching array with inner columns lined up) - Fix rounding in formatNumber
v0.1.1
- Added toFixed method (
accounting.toFixed(value, precision)
), which treats floats more like decimals for more accurate currency rounding - Minified version preserves semicolons
- Fixed
NaN
errors when no value in unformat
v0.1 - First version