js 小数计算误差
2011-12-07 20:52
253 查看
今天在做有关基金财务数据的计算校验时,发现了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;
}
在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;
}
相关文章推荐
- js 小数计算误差
- js 小数计算误差
- 【JavaScript】js中的小数计算学问大-》注意误差
- 问题总结···js浮点小数计算问题
- js 计算价格后保留两位小数
- BigDecimal处理小数计算误差
- 如何在js中精确除法计算并保留两位小数(不丢失精度)java针对于BigDecimal类型
- js小数计算小数点后显示多位小数
- 关于js小数计算的问题
- js数值计算的处理,防止精度误差
- js数字计算 误差 解决方法
- js中的小数计算精度问题,修正计算精度
- js计算出现多位小数-Javascript 浮点运算问题分析与解决
- js小数计算小数点后显示多位小数(转)
- js小数精确计算
- js小数计算小数点后显示多位小数的实现方法
- input取值转化为数值型及js浮点计算误差解决
- js 小数 计算 结果 不正确 不准确
- js小数计算小数点后显示多位小数
- JS数字计算精度误差的解决方法