题目:分数到小数
class Solution {
public String fractionToDecimal(int numerator, int denominator) {
ArrayList<Long> list = new ArrayList<>();
StringBuilder sb = new StringBuilder();
long result = numerator / denominator;
long remain = numerator % denominator;
//临界
if (numerator == 0 || numerator == -2147483648){
if (numerator == -2147483648 && denominator >0){
sb.append("-"+Math.abs(result));
}else {
sb.append(Math.abs(result));
}
}else {
//异号为负,同号为正
if ((numerator < 0) ^ (denominator < 0))
{
sb.append("-"+Math.abs(result));
}else {
sb.append(result);
}
}
if (remain == 0){
return new String(sb);
}
result = Math.abs(result);
remain = Math.abs(remain);
sb.append(".");
int before = sb.length();
list.add(remain);
remain = remain*10;
while (remain != 0){
result = remain / denominator;
result = Math.abs(result);
sb.append(result);
remain = remain % denominator;
if (remain == 0){
break;
}
if (list.contains(remain))
break;
list.add(remain);
remain = remain*10;
}
if (list.contains(remain)){
int i = list.indexOf(remain);
sb.insert(before + i,'(');
sb.insert(before+list.size()+1,')');
return new String(sb);
}
return new String(sb);
}
}