美文网首页
解决js浮点数精度丢失:number-precision/big

解决js浮点数精度丢失:number-precision/big

作者: 元宇宙编程 | 来源:发表于2023-11-05 18:06 被阅读0次
一、js浮点数精度丢失
 0.1 + 0.2 === 0.30000000000000004
 2.3 + 2.4 === 4.699999999999999
 1 - 0.9 === 0.09999999999999998
 3 * 0.3 === 0.8999999999999999
 0.362 * 100 === 36.199999999999996
 1.21 / 1.1 === 1.0999999999999999
 0.105.toFixed(2) === '0.10' // true,toFixed四舍五入的效果在此例上没有体现
二、使用number-precision解决
1、安装
 npm install number-precision --save
2、引入
import NP from 'number-precision'
3、使用
  • console.log(NP.plus(0.1, 0.2)) // 0.3
    console.log(NP.plus(2.3, 2.4)) // 4.7
    
  •    console.log(NP.minus(1, 0.9)) // 0.1
    
  •  console.log(NP.times(3, 0.3)) // 0.9
     console.log(NP.times(0.362, 100)) // 36.2
    
  •  console.log(NP.divide(1.21, 1.1)) // 1.1
    

保留几位小数点,实现了toFixed在此场景下四舍五入的功能

   console.log(NP.round(0.105, 2)) // 0.11
三、使用bignumber.js解决
1、安装
  npm install bignumber.js --save
2、引入
 import BigNumber from 'bignumber.js'
3、使用

 const a = new BigNumber(0.1)
 console.log(a.plus(0.2).toString()) // 0.3

 const a = new BigNumber(1)
 console.log(a.minus(0.9).toString()) // 0.1

const a = new BigNumber(3)
console.log(a.times(0.3).toString()) // 0.9

const a = new BigNumber(1.21)
console.log(a.div(1.1).toString()) // 1.1

取余

const a = new BigNumber(10)
console.log(a.mod(4).toString()) // 2

比较大小

const a = new BigNumber(10)
console.log(a.eq(10)) // true 是否相等
console.log(a.gt(9)) // true a是否大于9
console.log(a.gte(9)) // true a是否大于等于9
console.log(a.lt(9)) // false a是否小于9
console.log(a.lte(9)) // false a是否小于等于9

相关文章

网友评论

      本文标题:解决js浮点数精度丢失:number-precision/big

      本文链接:https://www.haomeiwen.com/subject/duzzidtx.html