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

js 小数计算误差

2011-12-07 20:52 246 查看
今天在做有关基金财务数据的计算校验时,发现了js在计算小数时的误差问题,在网上找了下资料发现:
在js中,带小数的数据相加或相乘时总会出现好多位小数.这是因为在js中浮点数的计算是以2进制算的,解决方法一般是将小数化成整数后再作除法。

在网上有很多的这样的类似解决的方案:

//加法

function addValue(value1,value2){

if(value1=="")value1="0";

if(value2=="")value2="0";

var temp1=0;

var temp2=0;

if(value1.indexOf(".")!=-1)

temp1=value1.length - value1.indexOf(".")-1;

if(value2.indexOf(".")!=-1)

temp2=value2.length - value2.indexOf(".")-1;

var temp=0;

if(temp1>temp2)

temp = (parseFloat(value1)+parseFloat(value2)).toFixed(temp1);

else

temp = (parseFloat(value1)+parseFloat(value2)).toFixed(temp2);

return temp;

}

//减法

function subValue(value1,value2){

if(value1 == "") value1="0";

if(value2 == "") value2="0";

var temp1 = 0;

var temp2 = 0;

if(value1.indexOf(".") != -1)

temp1 = value1.length - value1.indexOf(".")-1;

if(value2.indexOf(".") != -1)

temp2 = value2.length - value2.indexOf(".")-1;

var temp=0;

if(temp1 > temp2)

temp = (parseFloat(value1) - parseFloat(value2)).toFixed(temp1);

else

temp = (parseFloat(value1)- parseFloat(value2)).toFixed(temp2);

return temp;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: