深圳建站工作室,网页设计师个人简历,深圳建站公司模板,seo搜索优化公司项目场景#xff1a;
提示#xff1a;项目需求截图#xff1a; 问题描述
众所周知Js做运算时0.10.2不等于0.3,目前项目需要计算关于金额的选项#xff0c;涉及到金额保留后两位。保单欠款是根据用户输入的保单应收和保单欠款自动计算的。 原因分析#xff1a; 产生浮点数…项目场景
提示项目需求截图 问题描述
众所周知Js做运算时0.10.2不等于0.3,目前项目需要计算关于金额的选项涉及到金额保留后两位。保单欠款是根据用户输入的保单应收和保单欠款自动计算的。 原因分析 产生浮点数计算精度不准确的原因 在计算机角度计算机算的是二进制而不是十进制。二进制后变成了无线不循环的数而计算机可支持浮点数的小数部分可支持到52位所有两者相加在转换成十进制得到的数就不准确了加减乘除运算原理一样。 提示js小数计算精度缺失是历史遗留问题被人诟病很多不过也有办法解决js小数计算会缺失精度但正数不会有这个问题所以计算时把小数扩大相应倍数让它变成整数计算最后结果再除以相应倍数就得到了想要的结果。 不过我这边使用的是mathjs第三方库。下面是mathjs的解决办法 解决方案 提示mathjs解决方案 官网https://mathjs.org/index.html 安装
npm install mathjs引入
import * as math from mathjs封装成方法
import * as math from mathjs;
//例如:num1-num2,在需要的地方直接调用subtract 传二个参数num1,num2// 加add(num1,num2){return math.add(math.bignumber(num1),math.bignumber(num2));},// 减subtract(num1,num2){return math.subtract(math.bignumber(num1),math.bignumber(num2));},// 乘multiply(num1,num2){return math.multiply(math.bignumber(num1),math.bignumber(num2));},// 除divide(num1,num2){return math.divide(math.bignumber(num1),math.bignumber(num2));
}