转自 http://penghuaiyi.iteye.com/blog/258441
//浮点数加法运算
function FloatAdd(arg1, arg2) {
var r1,r2,m;
try {
r1 = arg1.toString().split(".")[1].length
} catch(e) {
r1 = 0
}
try {
r2 = arg2.toString().split(".")[1].length
} catch(e) {
r2 = 0
}
m = Math.pow(10, Math.max(r1, r2))
return (arg1 * m + arg2 * m) / m
}
//浮点数减法运算
function FloatSub(arg1, arg2) {
var r1,r2,m,n;
try {
r1 = arg1.toString().split(".")[1].length
} catch(e) {
r1 = 0
}
try {
r2 = arg2.toString().split(".")[1].length
} catch(e) {
r2 = 0
}
m = Math.pow(10, Math.max(r1, r2));
//动态控制精度长度
n = (r1 >= r2) ? r1 : r2;
return ((arg1 * m - arg2 * m) / m).toFixed(n);
}
//浮点数乘法运算
function FloatMul(arg1, arg2)
{
var m = 0,s1 = arg1.toString(),s2 = arg2.toString();
try {
m += s1.split(".")[1].length
} catch(e) {
}
try {
m += s2.split(".")[1].length
} catch(e) {
}
return Number(s1.replace(".", "")) * Number(s2.replace(".", "")) / Math.pow(10, m)
}
//浮点数除法运算
function FloatDiv(arg1, arg2) {
var t1 = 0,t2 = 0,r1,r2;
try {
t1 = arg1.toString().split(".")[1].length
} catch(e) {
}
try {
t2 = arg2.toString().split(".")[1].length
} catch(e) {
}
with (Math) {
r1 = Number(arg1.toString().replace(".", ""))
r2 = Number(arg2.toString().replace(".", ""))
return (r1 / r2) * pow(10, t2 - t1);
}
}
//浮点数保留两位有效数
function changeTwoDecimal_f(x)
{
var f_x = parseFloat(x);
if (isNaN(f_x))
{
alert('计算出错');
return false;
}
var f_x = Math.round(x * 100) / 100;
var s_x = f_x.toString();
var pos_decimal = s_x.indexOf('.');
if (pos_decimal < 0)
{
pos_decimal = s_x.length;
s_x += '.';
}
while (s_x.length <= pos_decimal + 2)
{
s_x += '0';
}
return s_x;
}