console.log(0.1+0.2)
//输出:0.30000000000000004
以上就是js计算失误的一个例子,所以我专门找了一个js库来解决这个问题,我用的是decimal.js。
直接放使用总结吧,其余的在下面:
/*
* npm 安装,引用
*/
npm i decimal.js --save
import {Decimal} from 'decimal.js'
/*
* 返回一个Decimal对象
*/
Decimal(1)
//输出:Decimal {s: 1, e: 0, d: Array(1), constructor: ƒ}
constructor: ƒ Decimal(v)
d: [1]
e: 0
s: 1
[[Prototype]]: Object
/*
* 最好不要再Decimal里运算
*/
Decimal.add(0.1, 0.2).toNumber()// 输出:0.3
Decimal(0.1+0.2).toNumber() // 输出:0.30000000000000004
/*
* 可嵌套使用
*/
Decimal.mul(Decimal.add(0.1, 0.2), 3)
// 输出:0.9
/*
* 可链式调用
*/
Decimal.add(0.1, 0.2).mul(3)
// 输出:0.9
关于decimal.js
简单,功能齐全,复制了js Number.prototype和Math的一些方法,处理了16进制,2进制和8进制,无依赖,可兼容多个平台等