leetcode 166(分数转化位小数)

string fractionToDecimal(int numerator, int denominator) {
        long long n=numerator,d=denominator;
        string ans="";
        map<long long,int> m;
        if(n*d<0)
            ans+="-";
        n=abs(n);
        d=abs(d);
        if(n%d==0)
        {
            ans+=to_string(n/d);
            return ans;
        }
        if(n<d)
            ans+="0.";
        else
            ans+=to_string(n/d)+".";
        long long t=n%d;
        while(t)
        {
            if(m[t])
            {
                ans.insert(m[t],"(");
                ans.push_back(')');
                return ans;
            }
            m[t]=ans.size();
            ans+=to_string(t*10/d);//ans+='0'+t*10/d;也一样
            t=t*10%d;
        }
        return ans;
    }

  

posted on 2019-02-28 21:32  QingFengDaHui  阅读(219)  评论(0编辑  收藏  举报

导航