JS表示小数循环

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("");
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值