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

js高精度浮点数运算

2018-03-23 16:41 316 查看
贴代码: 

// 自定义高精度浮点数运算
// 对象格式写法
var float_calculator={
/**
* 1.记录两个运算数小数点后的位数
* 2.将其转化为整数类型进行运算
* 3.移动小数点的位置
**/
add:function(arg1,arg2){
var r1,r2,m;
try{
//取小数位长度
r1=arg1.toString().split(".")[1].length;
r2=arg2.toString().split(".")[1].length;
}catch(e){
r1=0;r2=0;
}
m=Math.pow(10,Math.max(r1,r2));		//计算因子

return (arg1*m+arg2*m)/m;
},
minus:function(arg1,arg2){
return this.add(arg1,-arg2);
},
mul:function(arg1,arg2){
var r1,r2,m;
try{
//取小数位长度
r1=arg1.toString().split(".")[1].length;
r2=arg2.toString().split(".")[1].length;
}catch(e){
r1=0;r2=0;
}
m=Math.pow(10,Math.max(r1,r2));		//计算因子

return (arg1*m)*(arg2*m)/(m*m);
},
div:function(arg1,arg2){
if( arg2 == 0 ) return 0;
var t1=0,t2=0,r1,r2;
try{
t1=arg1.toString().split(".")[1].length;
t2=arg2.toString().split(".")[1].length;
}catch(e){}

with(Math){
r1=Number(arg1.toString().replace(".",""));
r2=Number(arg2.toString().replace(".",""));
}

return (r1/r2)*Math.pow(10,t2-t1);
}
};

测试:

alert("高精度加法计算结果: "+float_caculator.add(1.11444,23.45674231)+
"\njs计算结果: "+(1.11444+23.45674231));
alert("高精度减法计算结果: "+float_caculator.minus(1.11444,23.45674231)+
"\njs计算结果: "+(1.11444-23.45674231));
alert("高精度乘法计算结果: "+float_caculator.mul(1.11444,23.45674231)+
"\njs计算结果: "+(1.11444*23.45674231));
alert("高精度除法计算结果: "+float_caculator.div(1.11444,23.45674231)+
"\njs计算结果: "+(1.11444/23.45674231));

测试结果如下:

加法



减法



乘法



除法

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