随身笔记
随身笔记

解决js计算数字精度问题

 

function twofloat(v){
  return Number((Number(v).toFixed(2)).toString()) //有小数保留,没小数就不用默认显示.00,多位小数就保留2位,同时解决精度问题
}
console.log( twofloat(0.3-0.1) )

————————————————-

console.log(0.1+0.2); // 输出 0.30000000000000004
console.log(0.3-0.1); // 输出:0.19999999999999998
console.log(0.07*100); // 输出 7.000000000000001

 

使用第三方库解决:

其中,前3个是同一个作者,体积一个比一个大,参见作者写的:big.js,bignumber.js和decimal.js有什么区别?

以decimal.js为例:

new Decimal(0.1).plus(0.2).toString() // '0.3'
new Decimal(0.3).minus(0.1).toString() // '0.2'
new Decimal(0.07).times(100).toString() // '7'

最后一个 mathjs 是比较出名的专门处理数学计算的库,功能非常全,如果只是用来解决精度计算用这个库会显得杀鸡用牛刀。

https://sdeno.com/wp-content/uploads/2021/03/mathjs.png

http://blog.haoji.me/js-float.html

 

随身笔记

解决js计算数字精度问题
  function twofloat(v){ return Number((Number(v).toFixed(2)).toString()) //有小数保留,没小数就不用默认显示.00,多位小数就保留2位,同时解决精度问题 } console.log( …
扫描二维码继续阅读
2021-03-15