(每日一练python)分数到小数

分数到小数

给定两个整数,分别表示分数的分子 numerator 和分母 denominator,以 字符串形式返回小数 。

如果小数部分为循环小数,则将循环的部分括在括号内。

如果存在多个答案,只需返回 任意一个 。

对于所有给定的输入,保证 答案字符串的长度小于 104 。

示例 1:

输入:numerator = 1, denominator = 2
输出:"0.5"

示例 2:

输入:numerator = 2, denominator = 1
输出:"2"

示例 3:

输入:numerator = 2, denominator = 3
输出:"0.(6)"

示例 4:

输入:numerator = 4, denominator = 333
输出:"0.(012)"

示例 5:

输入:numerator = 1, denominator = 5
输出:"0.2"

提示:

  • -2^31 <= numerator, denominator <= 2^31 - 1
  • denominator != 0
class Solution(object):
    def fractionToDecimal(self, numerator, denominator):
        if numerator < 0 and denominator < 0:
            numerator, denominator = -numerator, -denominator
        u = (numerator < 0) ^ (denominator < 0)
        numerator = abs(numerator)
        denominator = abs(denominator)
        numerator = numerator % denominator
        if numerator == 0:
            return str(numerator // denominator)
        s = str(abs(numerator) // denominator) + "."
        q = {}
        l = []
        while numerator < denominator:
            numerator = numerator * 10
            l.append(numerator)
            q[numerator] = numerator // denominator
        numerator = numerator % denominator * 10
        while numerator not in q and numerator != 0:
            l.append(numerator)
            q[numerator] = numerator // denominator
            numerator = numerator % denominator
            numerator = numerator * 10
        for i in range(0, len(l)):
            if numerator == l[i]:
                s = s + "("
            s = s + str(q[l[i]])
        if "(" in s:
            s = s + ")"
        if u:
            s = "-" + s
        return s
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值