前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >js高精度浮点数运算

js高精度浮点数运算

作者头像
lonelydawn
发布2018-02-09 11:18:55
6.4K0
发布2018-02-09 11:18:55
举报
文章被收录于专栏:lonelydawn的前端猿区

贴代码: 

代码语言:javascript
复制
// 自定义高精度浮点数运算
// 对象格式写法
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);
	}
};

测试:

代码语言:javascript
复制
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));

测试结果如下:

加法

减法

乘法

除法

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档