/**
* 在javascript中,乘法结果会有误差,特别在两个浮点数相乘的时候会比较明显。
* 这个函数返回较为精确的乘法结果。
* @author yukh
* @createTime 2009-8-27
*/
function numberMul(arg1,arg2){
var res = 0;
var s1 = arg1.toString();
var s2 = arg2.toString();
if(s1.indexOf(".") != -1)
res += s1.split(".")[1].length;
if(s2.indexOf(".") != -1)
res += s2.split(".")[1].length;
return Number(s1.replace(".",""))*Number(s2.replace(".",""))/Math.pow(10,res);
}
/**
* 在javascript中,除法结果会有误差,特别在两个浮点数相除的时候会比较明显。
* 这个函数返回较为精确的除法结果。
* @author yukh
* @createTime 2009-8-27
*/
function numberDiv(arg1, arg2){
var t1=0,t2=0,r1,r2;
arg1 = arg1.toString();
arg2 = arg2.toString();
if(arg1.indexOf(".") != -1)
t1 = arg1.split(".")[1].length;
if(arg2.indexOf(".") != -1)
t2 = arg2.split(".")[1].length;
with(Math){
if(arg2*pow(10,t2) == 0){
alert("被除数不能为0!");
return 0;
}
r1 = Number(arg1.replace(".",""))
r2 = Number(arg2.replace(".",""))
return (r1/r2)*pow(10,t2-t1);
}
}
/**
* 在javascript中,加法结果会有误差,特别在两个浮点数相加的时候会比较明显。
* 这个函数返回较为精确的加法结果。
* @author yukh
* @createTime 2009-8-27
*/
function numberAdd(arg1, arg2){
var r1 = 0,r2 = 0, m;
arg1 = arg1.toString();
arg2 = arg2.toString();
if(arg1.indexOf(".") != -1)
r1 = arg1.split(".")[1].length;
if(arg2.indexOf(".") != -1)
r2 = arg2.split(".")[1].length;
m = Math.pow(10,Math.max(r1,r2))
return (arg1*m + arg2*m)/m;
}
/**
* 在javascript中,减法结果会有误差,特别在两个浮点数相减的时候会比较明显。
* 这个函数返回较为精确的减法结果。
* @author yukh
* @createTime 2009-8-27
*/
function numMin(arg1, arg2){
var r1=0, r2=0 , m;
arg1 = arg1.toString(),arg2 = arg2.toString();
if(arg1.indexOf(".") != -1)
r1 = arg1.split(".")[1].length;
if(arg2.indexOf(".") != -1)
r2 = arg2.split(".")[1].length;
m = Math.pow(10, Math.max(r1,r2));
return (arg1*m - arg2*m)/m;
}