您的位置:首页 > Web前端 > JavaScript

js 运算误差解决方案

2015-11-26 16:33 483 查看
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');//注意:表达式必须以字符串的形式传入
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息