leetcode 分数到小数 python

游标一定要记得在循环里不断增加

class Solution(object):
    def fractionToDecimal(self, n, d):
        def sign(x):
            if x>0:
                return 1
            if x<0:
                return -1
            if x==0:
                return 0
        if d==0:
            return 'NaN'
        if n==0:
            return '0'
        isNeg=False
        if sign(n)*sign(d)==-1:
            d=d*sign(d)
            n=n*sign(n)
            isNeg=True
        res=n//d
        rem=n%d
        if rem == 0:
            return '-'+str(res) if isNeg else str(res)
        dec_str=''
        dict_rem={}
        dec_cur=0
        while rem!=0 and rem not in dict_rem:
            dict_rem[rem]=dec_cur
            dec_str+=str(rem*10//d)
            rem=rem*10%d
            dec_cur+=1
        if rem == 0:
            return ('-' if isNeg else '')+str(res)+'.'+dec_str
        return ('-' if isNeg else '')+str(res)+'.'+dec_str[:dict_rem[rem]]+'('+dec_str[dict_rem[rem]:]+')'

你可能感兴趣的:(leetcode 分数到小数 python)