分数到小数

Posted wangyufeng99

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了分数到小数相关的知识,希望对你有一定的参考价值。

class Solution 
    public String fractionToDecimal(int numerator, int denominator) 
        long numeratorLong = (long) numerator;
        long denominatorLong = (long) denominator;
        if (numeratorLong % denominatorLong == 0) 
            return String.valueOf(numeratorLong / denominatorLong);
        

        StringBuffer sb = new StringBuffer();
        if (numeratorLong < 0 ^ denominatorLong < 0) 
            sb.append('-');
        

        // 整数部分
        numeratorLong = Math.abs(numeratorLong);
        denominatorLong = Math.abs(denominatorLong);
        long integerPart = numeratorLong / denominatorLong;
        sb.append(integerPart);
        sb.append('.');

        // 小数部分
        StringBuffer fractionPart = new StringBuffer();
        Map<Long, Integer> remainderIndexMap = new HashMap<Long, Integer>();
        long remainder = numeratorLong % denominatorLong;
        int index = 0;
        while (remainder != 0 && !remainderIndexMap.containsKey(remainder)) 
            remainderIndexMap.put(remainder, index);
            remainder *= 10;
            fractionPart.append(remainder / denominatorLong);
            remainder %= denominatorLong;
            index++;
        
        if (remainder != 0)  // 有循环节
            int insertIndex = remainderIndexMap.get(remainder);
            fractionPart.insert(insertIndex, '(');
            fractionPart.append(')');
        
        sb.append(fractionPart.toString());

        return sb.toString();
    

以上是关于分数到小数的主要内容,如果未能解决你的问题,请参考以下文章

题目地址(166. 分数到小数)

《LeetCode之每日一题》:167.分数到小数

166. 分数到小数

leetcode-166. 分数到小数

LeetCode166 分数到小数

166. 分数到小数 (模拟除法)