本文作者:问几许

JavaScript | 大数计算、浮点运算(decimal.js、bignumber.js、big-number)简易的使用文档

问几许 5年前 ( 2019-06-05 ) 11269 抢沙发
JavaScript | 大数计算、浮点运算(decimal.js、bignumber.js、big-number)简易的使用文档摘要: 写在前面的话:在开发中,我们会遇到一些不可避免的数字运算,一位小数的,N位小数的,0.1 + 0.2 都不等于0.3,就别说3.1415926 * 3.1415926了。...

写在前面的话:

在开发中,我们会遇到一些不可避免的数字运算,一位小数的,N位小数的,0.1 + 0.2 都不等于0.3,就别说3.1415926 * 3.1415926了。这些精度问题给我们带来了很多困扰。NPM是个好东西,有很多大佬造的轮子(工具),然后我们搬来装在自己的车上,不需要自己薅光头发的去制造。这篇就简单介绍三个插件的用法。

decimal.js

GitHub:https://github.com/MikeMcl/decimal.js

API:http://mikemcl.github.io/decimal.js/

Used by: 6500 +

decimal.js的特点就是处理整数和浮点数,还处理十六进制、二进制和八进制值。

1、安装和引用

// NodeJS

npm install -save decimal.js

const Decimal = require("decimal.js");

// ES6 module
// import Decimal from "decimal.js";
import {Decimal} from "decimal.js";

2、基本的加减乘除

const a = 9.99;
const b = 8.03;

// 加法
let c = new Decimal(a).add(new Decimal(b)).toNumber();

// 减法
let d = new Decimal(a).sub(new Decimal(b)).toNumber();

// 乘法
let e = new Decimal(a).mul(new Decimal(b)).toNumber();
    
// 除法
let f = new Decimal(a).div(new Decimal(b)).toNumber();

bignumber.js

GitHub:https://github.com/MikeMcl/bignumber.js

API:http://mikemcl.github.io/bignumber.js/

Used by:165000 +

bignumber.js的特点就是处理整数和小数,跟decimal.js是一个作者,至于两者之间的区别,我暂时没深层次的研究,但是区别肯定是有的,因为我曾经使用时候算错过,因为换了一下,事后也没去研究。

1、安装和引用

// Node.js

npm install bignumber.js

const BigNumber = require('bignumber.js');

// ES6 module
import BigNumber from "./bignumber.js"

2、基本的加减乘除

const a = 9.99;
const b = 8.03;

// 加
let c = new BigNumber(a).plus(b).toNumber();

// 减
let d = new BigNumber(a).minus(b).toNumber();

// 乘
let e = new BigNumber(a).multipliedBy(b).toNumber();

// 除
let f = new BigNumber(a).dividedBy(b).toNumber();

big-number

GitHub:https://github.com/alexbardas/bignumber.js

API:http://alexbardas.github.io/bignumber.js/

Used by:6700 +

big-number 的特点就是轻量级,支持大数据计算,支持最基本算术运算(+, - ,*,/,%,^,abs)。但是相比上面两个,就没那么多的功能。

1、安装和引用

// Node.js

npm install big-number

var BigNumber = require('big-number');

2、基本运算

// 加

BigNumber(2).plus(10); // or
BigNumber(2).add(10);

// 减
BigNumber(2).minus(10); // or
BigNumber(2).subtract(10);

// 乘
BigNumber(2).multiply(10); // or
BigNumber(2).mult(10);

// 除
BigNumber(2).divide(10); // or
BigNumber(2).div(10);

// 取余
BigNumber(53).mod(14);

// 乘幂
BigNumber(2).power(10); // or
BigNumber(2).pow(10);


文章版权及转载声明

作者:问几许本文地址:https://wenjixu.com/blog/122.html发布于 5年前 ( 2019-06-05 )
文章转载或复制请以超链接形式并注明出处问几许

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏

阅读
分享

发表评论

快捷回复:

评论列表 (暂无评论,11269人围观)参与讨论

还没有评论,来说两句吧...