1/7 = 0.142857142… 是个无限循环小数。
任何有理数都可以表示为无限循环小数的形式。
本题目要求即是:给出一个数字的循环小数表示法。
例如:
输入:
1,5
则输出:
0.2
输入:
1,7
则输出:
0.(142857)
输入:
7,6
则输出:
1.1(6)
用户输入的格式是:
整数,整数
每个整数范围均为:1~1000
程序输出两个整数做除法产生的小数或无限循环小数(循环节用括号括起)。
function fractionToDecimal( numerator , denominator ) {
let s=[],y=[];//c商,y是余数
let res=[],p,flag=0;
let a=Math.floor(numerator/denominator);
let b=numerator%denominator;
if(b==0){//被整除了
res.push(a);
}else {//有余数
res.push(a+".");
while (b<denominator){
a=Math.floor(b*10/denominator);
b=b*10%denominator;
if(b==0){//不循环
s.push(a);
res.push(s.join(""));
break;
}else {
if(s.length==0){
s.push(a);
y.push(b);
}else {
for (var i=0;i<s.length;i++) {
if(a==s[i]&&b==y[i]){//有循环节
p=i;
flag=1;
res.push(s.slice(0,p).join("")+"("+s.slice(p).join("")+")");
break;
}
}
if(i>=s.length){
s.push(a);
y.push(b);
}
if(flag==1){
break;
}
}
}
a
}
}
return res.join("");
}