题目
代码分析
需要注意的就是特殊情况的判断以及循环小数的处理问题,这里我们通过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次

京公网安备 11010502036488号