【js】 操作小数的时候精度问题

 

 解决方案一:

 

 解决方案二:

引入外部bignumber.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();
复制代码

扩展:

理论上用有限的空间来存储无限的小数是不可能保证精确的,但我们可以处理一下得到我们期望的结果

当你拿到 1.4000000000000001 这样的数据要展示时,建议使用 toPrecision 凑整并 parseFloat 转成数字后再显示,如下:

parseFloat(1.4000000000000001.toPrecision(12)) === 1.4  // True

封装成方法就是:

function strip(num, precision = 12) {
  return +parseFloat(num.toPrecision(precision));
}

 

相关资料:

 

posted on   smile轉角  阅读(170)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
历史上的今天:
2018-06-28 【vue】在移动端使用better-scroll 实现滚动效果

导航

统计

点击右上角即可分享
微信分享提示