js浮点数基础运算精度问题处理

 

function floatMath(float_a,float_b,type = '+'){
	let a = float_a.toString().split('.');
	let b = float_b.toString().split('.');
	let a_len = a.length == 1 ? 0 : a[1].length;
	let b_len = b.length == 1 ? 0 : b[1].length;
	let max = Math.max(a_len,b_len);
	if(a_len == 0) a_len = max;
	if(b_len == 0) b_len = max;
	let len = Math.pow(10,max);
	let a_r = a.length == 1 ? parseInt(a[0]) * len : parseInt(a[0]) * len + Math.pow(10,max - a_len) * parseInt(a[1]);
	
	let b_r = b.length == 1 ? parseInt(b[0]) * len : parseInt(b[0]) * len + Math.pow(10,(max - b_len)) * parseInt(b[1]);
	switch(type){
		case '+':
		return (a_r + b_r)/len;
		case '-':
		return (a_r - b_r)/len;
		case '*':
		return (a_r * b_r)/Math.pow(10,a_len + b_len);
		case '/':
		return (a_r / b_r);
		default:
		return {float_a,float_b};
	}
	
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值