解决JavaScript四则运算精度缺失问题

加法

原理:将浮点数转换为整数进行加法运算,运算结果再除以10的N次幂

例子:10.333+5.1232 ===> (103330+51232)÷10000

方法:

function addition(num1,num2){
	var len1='';
	var len2='';
	if(num1.toString().indexOf('.')==-1){
		len1=0;
	}else{
		len1=len1=num1.toString().split('.')[1].length;
	}
	if(num2.toString().indexOf('.')==-1){
		len2=0;
	}else{
		len2=num2.toString().split('.')[1].length;
	}
	var len=len1>len2?len1:len2;
	var x=Math.pow(10,len);
	return (num1*x+num2*x)/x;
}

减法

原理:将浮点数转换为整数进行减法运算,运算结果再除以10的N次幂

例子:16.733+5.1232 ===> (167330-51232)÷10000

方法:

function subtration(num1,num2){
	var len1='';
	var len2='';
	if(num1.toString().indexOf('.')==-1){
		len1=0;
	}else{
		len1=len1=num1.toString().split('.')[1].length;
	}
	if(num2.toString().indexOf('.')==-1){
		len2=0;
	}else{
		len2=num2.toString().split('.')[1].length;
	}
	var len=len1>len2?len1:len2;
	var x=Math.pow(10,len);
	return (num1*x-num2*x)/x;
}

乘法

原理:将浮点数转换为整数进行乘法运算,运算结果再除以10的N次幂

例子:45.123*6 ===> (45123*6000)÷1000

方法:

function multiplication(num1,num2){
	var len1='';
	var len2='';
	if(num1.toString().indexOf('.')==-1){
		len1=0;
	}else{
		len1=len1=num1.toString().split('.')[1].length;
	}
	if(num2.toString().indexOf('.')==-1){
		len2=0;
	}else{
		len2=num2.toString().split('.')[1].length;
	}
	var lensum=len1+len2;
	var x1=num1*Math.pow(10,len1);
	var x2=num2*Math.pow(10,len2);
	return (x1*x2)/Math.pow(10,lensum);
}

除法

原理:将浮点数转换为整数进行除法运算

例子:123.23÷1.11 ===> 12323÷111

方法:

function division(num1,num2){
	var len1='';
	var len2='';
	if(num1.toString().indexOf('.')==-1){
		len1=0;
	}else{
		len1=len1=num1.toString().split('.')[1].length;
	}
	if(num2.toString().indexOf('.')==-1){
		len2=0;
	}else{
		len2=num2.toString().split('.')[1].length;
	}
	var len=len1>len2?len1:len2;
	var x1=num1*Math.pow(10,len);
	var x2=num2*Math.pow(10,len);
	return (x1/x2);
}

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值