题目
代码分析
需要注意的就是特殊情况的判断以及循环小数的处理问题,这里我们通过map,不断的记录每一次运算的余数,如果有余数是相同的话,这样的话,就会产生循环小数
代码实现
public static String fractionToDecimal(int numerator, int denominator){ if(numerator==0) return "0"; StringBuilder sb=new StringBuilder(); if(numerator<0^denominator<0) { sb.append("-"); } Long n=Math.abs(Long.valueOf(numerator)); Long d=Math.abs(Long.valueOf(denominator)); long first=n/d; sb.append(first); n=n%d; if(n==0) { return sb.toString(); } sb.append("."); HashMap<Long,Integer> map=new HashMap<>(); while(n!=0) { if(map.containsKey(n)) { sb.insert(map.get(n),"("); sb.append(")"); break; } map.put(n,sb.length()); n*=10; sb.append(n/d); n=n%d; } return sb.toString(); }
学习情况
1次