166. Fraction to Recurring Decimal

Given two integers representing the numerator and denominator of a fraction, return the fraction in string format.

If the fractional part is repeating, enclose the repeating part in parentheses.

For example,

  • Given numerator = 1, denominator = 2, return "0.5".
  • Given numerator = 2, denominator = 1, return "2".
  • Given numerator = 2, denominator = 3, return "0.(6)".

题目含义:计算两个数的除法,出现无限循环位置时,用括号括起来

 1     public String fractionToDecimal(int numerator, int denominator) {
 2         if (denominator ==0) return "";
 3         StringBuilder result = new StringBuilder();
 4         String sign = (numerator < 0 == denominator < 0 || numerator == 0) ? "" : "-";
 5         long num = Math.abs((long) numerator);
 6         long den = Math.abs((long) denominator);
 7         result.append(sign);
 8         result.append(num / den);
 9         long remainder = num % den;
10         if (remainder == 0)
11             return result.toString();
12         result.append(".");
13         HashMap<Long, Integer> hashMap = new HashMap<Long, Integer>();
14         while (!hashMap.containsKey(remainder)) {
15             hashMap.put(remainder, result.length());
16             result.append(10 * remainder / den);
17             remainder = 10 * remainder % den;
18         }
19         int index = hashMap.get(remainder);
20         result.insert(index, "(");
21         result.append(")");
22         return result.toString().replace("(0)", "");        
23     }

 

转载于:https://www.cnblogs.com/wzj4858/p/7723041.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值