×

JS里Number.isInteger(a/b)或者a%b==0来进行判断整除

作者:andy0012020.04.10来源:Web前端之家浏览:8181评论:0
关键词:整除javascript

JS判断两个整数(a,b,a>b)的整除时,可以用Number.isInteger(a/b)或者a%b==0来进行判断,但是如果其中涉及到小数就会导致计算过程中精度丢失。

最简单的精度丢失例子,如0.1+0.2==0.3(false)。

相同的道理,a%b==0判断并不可取,如11%1.1=1.0999999999999992,则11%1.1==0为false。

同样的Number.isInteger(a/b)判断也不可取,如0.3/0.1=2.9999999999999996,则Number.isInteger(0.3/0.1)为false。

所以为了避免精度丢失,计算结果不正确,可以采用先转化为整数计算,下面提供两种方法,但本质上是一种。

//判断两个数的是否为整数倍,返回true或者false
function isPositiveIntegerTimes(arg1,arg2){
	if(arg1<arg2){
		var flag=arg1;
		arg1=arg2;
		arg2=arg1;
	}
	var t1=0,t2=0,r1,r2;
	try{t1=arg1.toString().split(".")[1].length}catch(e){}
	try{t2=arg2.toString().split(".")[1].length}catch(e){}
	with(Math){
		r1=Number(arg1.toString().replace(".",""));
		r2=Number(arg2.toString().replace(".",""));
		var times= (r1/r2)*pow(10,t2-t1);
 
		if (!(/(^[1-9]\d*$)/.test(times.toString()))) {
			return false;
		}
		else {
			return true;
		}
	}
}

您的支持是我们创作的动力!
温馨提示:本文作者系 ,经Web前端之家编辑修改或补充,转载请注明出处和本文链接:
https://jiangweishan.com/article/jszhegnzhu82309480239840328.html

网友评论文明上网理性发言 已有0人参与

发表评论: