JS判断两个数(包含小数)是否能够整除
2018-01-17 13:08
375 查看
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.
所以为了避免精度丢失,计算结果不正确,可以采用先转化为整数计算.下面提供两种方法,但本质上是一种
第一种方法,编写两个方法getIntegerTimes(),isPositiveIntegerTimes()判断两个数(包含小数),先获取倍数,再判断倍数是否为正整数,好处就是两个方法都可以作为通用方法调用.实现功能多.
第二种方法,就是单一方法isPositiveIntegerTimes(),判断两个数(包含小数)是否整除
最简单的精度丢失例子,如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.
所以为了避免精度丢失,计算结果不正确,可以采用先转化为整数计算.下面提供两种方法,但本质上是一种
第一种方法,编写两个方法getIntegerTimes(),isPositiveIntegerTimes()判断两个数(包含小数),先获取倍数,再判断倍数是否为正整数,好处就是两个方法都可以作为通用方法调用.实现功能多.
//获取两个数的倍数,返回倍数 function getIntegerTimes(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(".","")); return (r1/r2)*pow(10,t2-t1); } } //判断是否为正整数,返回true或false function isPositiveIntegerTimes(arg) { var num = arg.toString(); if (!(/(^[1-9]\d*$)/.test(num))) { return false; } else { return true; } }
第二种方法,就是单一方法isPositiveIntegerTimes(),判断两个数(包含小数)是否整除
//判断两个数的是否为整数倍,返回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; } } }
相关文章推荐
- java判断字符串是否为数字包含小数位与js判断是否为数字包含小数位
- jQuery判断数组中是否包含某个元素$.inArray("js", arr);
- JS判断字符串是否包含中文
- js中判断字符串是否包含某字符串
- js 判断数组是否包含某个key
- js 判断数组中是否包含
- js javascript 判断字符串是否包含某字符串,String对象中查找子字符
- js判断字符串中是否包含汉字
- js 判断字符串是否包含某字符串,String对象中查找子字符,indexOf
- JS判断字符串是否包含中文
- JS判断字符串是否包含中文
- js 判断数组是否包含某元素
- js判断一个元素是否包含另外一个元素
- js判断标签是否包含某个class
- js判断字符串中是否包含汉字
- js indexOf判断是否包含子字符串
- 判断js数组包是否包含某个元素
- JQuery判断数组中是否包含某个元素$.inArray("js", arr);
- JS 判断一个字符串是否包含在一个数组中
- 如何在js中判断是否包含某个字符串