A Javascript library for encoding numbers to any base with various formatting options.
- Encode and decode to and from any radix/base.
- Use specified symbols (digits, sign, radix character, padding, separators) to represent the encoded number.
- Adjust integer and fractions lengths.
- Adding "thousands" grouping separators, grouping at adjustable lengths.
- A choice of various rounding modes.
- Scientific and engineering notation.
- Alternatively output as a numeral object, to represent numbers in bases without the use of digit symbols.
- Encoding of decimal.js values for more precision.
- The API reference can be found here.
BaseFormatter
- Makes use of specified symbols and formatting options to represent the numbers.BaseConverter
- Alternatively represents numbers as numberal objects.
Installing the NPM package:
- Yarn
yarn add base-formatter
- NPM
npm install base-formatter
- ES module
import { BaseFormatter, BaseConverter } from 'base-formatter' // For just the BaseFormatter, simply: import BaseFormatter from 'base-formatter'
- CommonJS
const { BaseFormatter, BaseConverter } = require('base-formatter')
const base16Greek = new BaseFormatter('0123456789ΑΒΓΔΕΖ', {radixCharacter: ','})
// or for just the A-F characters, BaseFormatter.hexadecimal({...})
const dozenal = BaseFormatter.dozenal()
dozenal.encode(142) // '↋↊'
dozenal.encode(144) // '100'
dozenal.encode(1/3, {minimumIntegerDigits: 3, minimumFractionDigits: 3}) // '000;400'
dozenal.encode(1.6, {roundingMode: 'ceil', fractionDigits: 0}) // '2'
dozenal.encode(-1.6, {roundingMode: 'floor', fractionDigits: 0}) // '-2'
base16Greek.encode(13) // 'Δ'
base16Greek.encode(5e-6, {notation: 'scientific', maximumFractionDigits: 3}) // '1,Β1e-5'
dozenal.decode('↊;9429e↊') // 667430129664
dozenal.isNumber('↊;9429e↊') // true
// Making use of numeral outputs:
const base120 = new BaseConverter(120)
base120.encode(-1440)
// { isNegative: true, integer: [ 12, 0 ], fraction: [], exponent: 0 }
base120.encode(6347544.3456, {notation: 'scientific', maximumFractionDigits: 5})
// { isNegative: false, integer: [ 3 ], fraction: [ 80, 96, 24, 41, 57 ], exponent: 3 }
base120.decode({ isNegative: false, integer: [ 3 ], fraction: [ 80, 96, 24, 41, 57 ], exponent: 3 })
// 6347544.345625