Skip to content

javiercejudo/arbitrary-precision

master
Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Code

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
src
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

arbitrary-precision

Build Status Coverage Status Code Climate

Abstraction for decimal functionality in big.js, bignumber.js, decimal.js and others via adapters.

Install

npm i arbitrary-precision

Adapters

See up to date list.

Usage

var decimalFactory = require('arbitrary-precision');
var adapter = require('floating-adapter'); // See adapters section for full list

var Decimal = decimalFactory(adapter);

Operations

new Decimal('0.1').plus(new Decimal('0.2')).valueOf(); // => 0.1 + 0.3
new Decimal('0.3').minus(new Decimal('0.1')).valueOf(); // => 0.3 - 0.1
new Decimal('0.6').times(new Decimal('3')).valueOf(); // => 0.6 * 3
new Decimal('0.3').div(new Decimal('0.2')).valueOf(); // => 0.3 / 0.2

new Decimal('2').pow(new Decimal('3')).valueOf(); // => 8
new Decimal('9').sqrt().valueOf(); // => 3

new Decimal('2').equals(new Decimal('2')); // => true
new Decimal('2').equals(new Decimal('3')); // => false

new Decimal('2').lt(new Decimal('3')); // => true (other: lte, gt, gte)
new Decimal('2').cmp(new Decimal('3')); // => -1

toString, valueOf and toJSON

var decimalThird = new Decimal('1').div(new Decimal('3'));

// with bigjs-adapter (other adapters might have differing implementations)
decimalThird.toString() === decimalThird.valueOf() === decimalThird.toJSON(); // => true

Number(decimalThird); // => 1/3

JSON.stringify and JSON.parse with reviver

var Decimal40 = decimalFactory(adapter);

Decimal40.setPrecision(40);

var decimalThird = new Decimal40('1').div(new Decimal('3'));

var stringified = JSON.stringify(decimalThird);
// => '"0.3333333333333333333333333333333333333333"'

JSON.parse(stringified, Decimal40.reviver);
// => new Decimal40('0.3333333333333333333333333333333333333333')

See spec.