当前位置: 首页 > 工具软件 > decimal.js > 使用案例 >

浮点数计算精度问题decimal.js

汲雅珺
2023-12-01

浮点数精度问题
js计算会转为二进制进行计算,采用IEEE 754标准双精度浮点(64),64位中1位浮点数中符号,11位存储指数,52位存储浮点数的有效数字,从53位开始会舍入(舍入规则:0舍1入)

decimal可解决精度失准问题

decimal使用
安装引入

npm install --save decimal.js
import Decimal from 'decimal.js

let a = 1
let b = 2
a,b可以为任何类型。decimal内部会自己处理兼容
计算结果得到的是一个Decimal对象,需要转换为number(toNumber())或string(toString())

let res = new Decimal(a).add(new Decimal(b)).toNumber()

let res = new Decimal(a).sub(new Decimal(b)).toNumber()

let res = new Decimal(a).mul(new Decimal(b)).toNumber()

let res = new Decimal(a).div(new Decimal(b)).toNumber()

查看有几位小数(不计算小数点最后末尾的0)
y = new Decimal(987000.000)
y.sd() //3有效位数
y.sd(true) //6总共位数

保留多少个位数(小数位会补0)
x = 45.6
x.toPrecision(5) //45.600

保留多少位有效位数(小数位不会补0 计算有效位数)
x = new Decimal(9876.5)
x.toSignificantDigits(6) //9876.5 只针对有效位数

保留几位小数 和js中number一样
toFixed
x = 3.456
向下取整
x.toFixed(2,Decimal.ROUND_DOWN) //3.45(舍入模式 向上0 向下1 四舍五入)
向上取整
Decimal.ROUND_UP
四舍五入
ROUND_HALF_UP

 类似资料: