js求取小数点后100位小数,判断是否可除尽
首先,假设是一个除不尽的小数,这样理解的话,就很简单了。
function getDecimal(a, b) { let list = []; let remainder = a % b; // 求取当前余数,比如20%3剩余数2 while (list.length < 100) { let decimal = Math.floor(remainder * 10 / b); // 求取当前位小数 list.push(decimal); remainder = remainder * 10 % b; // 求取下一位余数 } return list.join(''); }
判断是否能除尽,其实只要判断余数中是否会出现重复数字即可,如果出现重复数字,说明陷入了某种循环里,并不能除尽。
function isDivisible(a, b) { let list = []; let isDivide = []; let flag = true; let result = true; let remainder = a % b; while (flag) { let decimal = Math.floor(remainder * 10 / b); if (remainder === 0) { // 能除尽 flag = false; } else if (isDivide.includes(remainder)) { // 不能除尽 flag = false; result = false; } else { isDivide.push(remainder); } list.push(decimal); remainder = remainder * 10 % b; } // 返回结果和余数 return [result, list]; }
posted on 2020-05-02 21:25 StephenWong 阅读(557) 评论(0) 编辑 收藏 举报