栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

力扣每日一题2021-10-03分数到小数

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

力扣每日一题2021-10-03分数到小数

分数到小数
  • 166.分数到小数
    • 题目描述
    • 思路:高精度除法


166.分数到小数 题目描述

分数到小数


思路:高精度除法

每一位小数是通过*10再除余计算的。而循环小数可以通过判断被除数有没有出现过,出现的位置在哪来判断(哈希记录)。

class Solution:
    def fractionToDecimal(self, numerator: int, denominator: int) -> str:
        def hdiv(dividend, divisor, precision=0):
            if (dividend > 0 and divisor > 0) or (dividend < 0 and divisor < 0):
                flag = 1
            else:
                flag = -1
            dividend = abs(dividend)
            divisor = abs(divisor)
            quotient = dividend // divisor
            remainder = dividend % divisor
            if remainder == 0:
                return str(quotient * flag)
            ans = [str(quotient), '.']
            repeats = dict()
            i = 0
            while i < precision:
                dividend = remainder * 10
                quotient = dividend // divisor
                remainder = dividend % divisor
                if dividend in repeats:
                    ans.insert(repeats[dividend], '(')
                    ans.append(')')
                    break
                ans.append(str(quotient))
                repeats[dividend] = i + 2
                if remainder == 0:
                    break
                i += 1
            if precision == 0:
                ans.pop(1)
            if flag == -1:
                return '-' + ''.join(ans)
            return ''.join(ans)
        return hdiv(numerator, denominator, 10000)
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/290757.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号