js 运算误差解决方案

1.因为计算机只认识二进制,所以某些数字二进制是无限循环的,例如:0.1=> 0.0001 1001 1001 ...无限循环   ,所以产生了精度问题,c这类语言已经封装好方法来避免,然而js并没有,为此带来不少的麻烦,特别是需要频繁计算的项目,出现bug还不容易发现。不扯皮,上解决方案:

1.化零为整

先把小数乘以10的次幂,然后再运算。

0.1+0.2=>((0.1*10)+(0.2*10))/10=>0.3;

当然这只是思路,实际应用还有很多问题,比如要判断有几位小数位,当表达式复杂的时候可阅读性的问题,我的思路是分别写加减乘除四个运算方法,把四个方法放到windwo对象的原型中(不推荐)或者放到某个模块类中;


2.CalcEval.js引擎

不想动脑的福利来了,CalcEval引擎专门解决js精度问题。


引入CalcEval.js

<script src="js/CalcEval.js"></script>

var ce=new CalcEval();//创建引擎对象

var result=ce.eval('0.1+0.2');//注意:表达式必须以字符串的形式传入


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值