public String fractionToDecimal(int numerator, int denominator) {
if(denominator==0){
return "";
}
if(numerator==0){
return "0";
}
String res="";
if((numerator<0)^(denominator<0)){
res+="-";
}
long num=numerator;
long den=denominator;
num=Math.abs(num);
den=Math.abs(den);
long tmp=num/den;
res+=String.valueOf(tmp);
long rem=(num%den)*10;
if(rem==0){
return res;
}
HashMap<Long, Integer> map = new HashMap<Long, Integer>();
res+=".";
while(rem!=0){
if(map.containsKey(rem)){
int begin=map.get(rem);
String part1=res.substring(0, begin);
String part2=res.substring(begin);
res=part1+"("+part2+")";
return res;
}
map.put(rem,res.length());
tmp=rem/den;
res+=String.valueOf(tmp);
rem=(rem%den)*10;
}
return res;
}
if(denominator==0){
return "";
}
if(numerator==0){
return "0";
}
String res="";
if((numerator<0)^(denominator<0)){
res+="-";
}
long num=numerator;
long den=denominator;
num=Math.abs(num);
den=Math.abs(den);
long tmp=num/den;
res+=String.valueOf(tmp);
long rem=(num%den)*10;
if(rem==0){
return res;
}
HashMap<Long, Integer> map = new HashMap<Long, Integer>();
res+=".";
while(rem!=0){
if(map.containsKey(rem)){
int begin=map.get(rem);
String part1=res.substring(0, begin);
String part2=res.substring(begin);
res=part1+"("+part2+")";
return res;
}
map.put(rem,res.length());
tmp=rem/den;
res+=String.valueOf(tmp);
rem=(rem%den)*10;
}
return res;
}