js高精度浮点数运算

时间:2022-04-27
本文章向大家介绍js高精度浮点数运算,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

贴代码: 

// 自定义高精度浮点数运算
// 对象格式写法
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));

测试结果如下:

加法

减法

乘法

除法