首先,假设是一个除不尽的小数,这样理解的话,就很简单了。
function getDecimal(a, b) {
let list = [];
let remainder = a % b; // 求取当前余数
while (list.length < 100) {
let remainder2 = Math.floor(remainder * 10 / b);
list.push(remainder2);
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 remainder2 = 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(remainder2);
remainder = remainder * 10 % b;
}
// 返回结果和余数
return [result, list];
}
原文:https://www.cnblogs.com/itstring/p/12819631.html