js中精确计算加法和减法示例

2014-03-28 40

/精确计算加法和减法。例如0.1+0.2=0.3或 0.1-0.2=-0.1

function addFn(dataOne,dataTwo){ var dataOneInt=dataOne.toString().split(".")[0]; 
var dataOneFloat=""; 
var dataTwoInt=dataTwo.toString().split(".")[0]; 
var dataTwoFloat=""; 
var lengthOne=0; 
var lengthTwo=0; 
var maxlength=0; 
if(dataOne.toString().split(".").length==2){ 
dataOneFloat=dataOne.toString().split(".")[1]; 
lengthOne=dataOneFloat.toString().length; 
} 
if(dataTwo.toString().split(".").length==2){ 
dataTwoFloat=dataTwo.toString().split(".")[1]; 
lengthTwo=dataTwoFloat.toString().length; 
} 
maxLength=Math.max(lengthOne,lengthTwo); 
for(var i=0;i<maxLength-lengthOne;i++){ 
dataOneFloat+="0"; 
} 
for(var i=0;i<maxLength-lengthTwo;i++){ 
dataTwoFloat+="0"; 
} 
/** 
*对两个数据进行倍数放大 
*使其都变为整数。因为整数计算 
*比较精确。 
*/ 
var one=dataOneInt+""+dataOneFloat; 
var two=dataTwoInt+""+dataTwoFloat; 
//alert("dataOne:"+dataOne+" dataTwo:"+dataTwo +" one:"+one+" two:"+two); 
/** 
*数据扩大倍数后,经计算的到结果, 
*然后在缩小相同的倍数 
*进而得到正确的结果 
*/ 
var result= (Number(one)+Number(two))/Math.pow(10,maxLength); 
return result; 
}
展开阅读全文

更多Javascript文章

javascript 带有滚动条的表格,标题固定,带排序功能.
Nov 13 43
jQuery学习总结之jQuery事件
Jun 30 41
使用jQuery Mobile框架开发移动端Web App的入门教程
May 17 41
单页面vue引入百度统计的使用方法示例详解
Oct 13 37
js判断在哪个浏览器打开项目的方法
Jan 21 50
node.js使用zlib模块进行数据压缩和解压操作示例
Feb 12 49
vue v-for 点击当前行,获取当前行数据及event当前事件对象的操作
Sep 10 44
手机访问当前页面