Isomorphic JavaScript numbers parser and formatter
npm install nmbr --save
// Standard HTML import
<script src="node_modules/nmbr/lib/index.js"></script>
<script>
var formatNumber = window.nmbr.formatNumber;
...
</script>
// JS module
import {formatNumber, parseNumber, shortNumber} from 'nmbr';
Converts the number to a string by specified options.
This method takes 2 arguments:
number
- any JS numberoptions
:
{
fractionSize?: number;
roundSize?: number;
minFractionSize?: number;
separateThousands?: boolean;
thousandDelimiter?: string;
fractionDelimiter?: string;
preset?: string;
}
Example:
import {formatNumber} from 'nmbr';
// '2.453,43'
const result = formatNumber(24534.343e-1, {
fractionSize: 2,
thousandDelimiter: '.',
fractionDelimiter: ','
});
More cases you may find in my test cases
You may define your own set of rules for formatting:
import {addFormattingPreset} from 'nmbr';
addFormattingPreset('myOwnPreset', {
fractionSize: 1,
thousandDelimiter: '.',
fractionDelimiter: ','
});
// '120.009,1'
const result = formatNumber(120009.123456, {
preset: 'myOwnPreset'
});
Parses a number from input string:
parseNumber('1,234', {thousandDelimiter: ','}); // 1234
parseNumber('1,234.56', {thousandDelimiter: ','}); // 1234.56
parseNumber('1.234,56', {thousandDelimiter: '.'}); // 1234.56
parseNumber('1.234.567', {thousandDelimiter: '.'}); // 1234567
You may omit delimiter options if you parse only fractional numbers:
import {parseNumber} from 'nmbr';
parseNumber('.02'); // 0.02
parseNumber('.1'); // 0.1
parseNumber(' 1 . 0'); // 1
parseNumber('-1 . 2'); // -1.2
parseNumber('--1 . 0'); // -1
parseNumber(' 1 , 1'); // 1.1
parseNumber('-1 , 2'); // -1.2
parseNumber('-1,12.78'); // -112.78
parseNumber('-1.13,79'); // -113.79
Converts long numbers to short ones:
import {shortNumber} from 'nmbr';
shortNumber(5432); // 5.4k
shortNumber(1236903); // 1.2M
shortNumber(1236903, {
template: "The size is [value]([unit]b)"
}); // The size is 1.2(Mb)
This method takes 2 arguments:
value
- number or string:2.13
or'2.13'
options
:
{
fractionSize?: number;
template?: string;
maxUnit?: NumberShortenerUnitName;
minUnit?: NumberShortenerUnitName;
}
// NumberShortenerUnitName = 'Y'|'Z'|'E'|'P'|'T'|'G'|'M'|'k'|'h'|'da'|'d'|'c'|'m'|'µ'|'n'|'p'|'f'|'a'|'z'|'y'