1) 关于怎么变换大数字错误的点
ref https://leetcode.com/discuss/27159/my-java-solution
public class Solution {
public String fractionToDecimal(int numerator, int denominator) {
// 我觉得特别清晰受益的一个解法https://leetcode.com/discuss/27159/my-java-solution
// long n = Math.abs(numerator), d = Math.abs(denominator);// 可能是特别大的数不能这么写
long n = numerator;
long d = denominator;
n = n>0? n:-n;
d = d>0? d:-d;
// 不要忘了全部变正数
String s = Long.toString(n/d);
int index = 0;
HashMap<Long, Integer> hm = new HashMap<Long, Integer>();
n = n%d;
if(n!=0)
s += ".";
index += s.length(); // current digit's position
//不断乘以10求得小数点后的位数
while(n>0){
if(hm.get(n)==null)
hm.put(n, index);
else{
s = s.substring(0,hm.get(n)) + "(" + s.substring(hm.get(n),index) + ")";
break;
}
n *=10;
s += Long.toString(n/d);
n %= d;
index++;
}
// if(numerator*denominator<0) s = "-"+s;// 可能是特别大的数不能这么写
if((numerator<0&&denominator>0) ||(numerator>0&& denominator<0)) s = "-"+s;
return s;
}
}