number-suffix
v1.1.0
Published
Turns a number to a fixed string with a metric or abbreviation suffix
Downloads
1,284
Maintainers
Readme
NumberSuffix
What does it do?
number-suffix
is a package for rounding numbers with a suffix for its zeros.
Example:
- 1,234 -> 1k
- 1,234,567 -> 1M
Featues
- Precision
- Fixed measurement
- Adding more formatting styles. It supports by default:
- Metric (default)
- Abbreviation
- Support for the following units:
- thousand
- million
- billion
- trillion
- quadrillion
- quintillion
Why not using number-abbreviate
, numbr
or numeraljs
?
Mainly because of the libraries usage. I needed something very generic to work with, which had to be fast and not creating any instances. The other libraries had either a limited API (which works well on the wide internet) or they're creating new objects for each format operation.
number-abbreviate
was the closest thing I found that meets my expectation - but lacked one feature I needed: a fixed measurement for numbers.
Also, this library uses mainly mathematic function for calculations compared to other libraries that uses strings instead, leading to slower performance.
Getting started
Basic installation:
npm i number-suffix --save
Basic importing, supports both CJS and MJS
const NumberSuffix = require('number-suffix')
import NumberSuffix from 'number-suffix'
import {format} from 'number-suffix'
Usage
Basic usage:
NumberSuffix.format(1234) // 1k
NumberSuffix.format(1234567) // 1M
NumberSuffix.format(1e9) // 1G
NumberSuffix.format(1e12) // 1T
Precision:
NumberSuffix.format(1234, {precision: 2}) // 1.23k
NumberSuffix.format(1234567, {precision: 2}) // 1.23M
Fixed measurement: Supports: 'thousand', 'million', 'billion', 'trillion', 'quadrillion' and 'quintillion'.
NumberSuffix.format(1234567, {measurement: 'thousand'}) // 1234k
NumberSuffix.format(1234, {precision: 3, measurement: 'million'}) // 0.001M
Abbreviation:
NumberSuffix.format(1e3, {style: 'abbreviation'}) // 1K
NumberSuffix.format(1e9, {style: 'abbreviation'}) // 1B
And adding and using a new style:
NumberSuffix.addStyle('yourStyleName', ['Thousand', 'Million', 'Billion', 'Trillion'])
NumberSuffix.format(1e6, {style: 'yourStyleName'}) // 1Million
If there are null values it will lean on the metric style as a fallback.
Instance
You can create an instance of NumberSuffix for more specific usage without using global settings.
const numberSuffix = new NumberSuffix({...})
You can use fixed options in addition to the ones you have:
const numberSuffix = new NumberSuffix({style: 'abbreviation'})
numberSuffix.format(1e3) // 1K
const numberSuffix = new NumberSuffix({precision: 2})
numberSuffix.format(1234) // 1.23k
const numberSuffix = new NumberSuffix({measurement: 'thousand'})
numberSuffix.format(1234567) // 1234k
And, of course, to override them for even more specific usage:
const numberSuffix = new NumberSuffix({measurement: 'thousand'})
numberSuffix.format(1234567, {measurement: 'million'}) // 1M
You can add your own style as well with
const numberSuffix = new NumberSuffix()
numberSuffix.addStyle('myStyle', ['T', 'M', 'B', 'T'])
numberSuffix.setDefaultStyle('myStyle')
To change the fixed options you can just:
const numberSuffix = new NumberSuffix()
numberSuffix.setOptions({...})