最好的参考:点击打开链接
理解这几行就好了:
nu = nu*10;
sb.append(nu/de);
nu = nu%de;
public class Solution {
public String fractionToDecimal(int numerator, int denominator) {
long nu = numerator;
long de = denominator;
if (nu == 0 || de == 0) {
return "0";
}
boolean positive = true;
if ((nu > 0 && de < 0) || (nu < 0 && de > 0)) {
positive = false;
}
nu = Math.abs(nu);
de = Math.abs(de);
String inte = (!positive ? "-" : "") + String.valueOf(nu/de);
if (nu%de != 0) {
Map<Long, Integer> map = new HashMap<>();
nu = nu%de;
int pos = 0;
map.put(nu, pos);
StringBuilder sb = new StringBuilder();
while (nu != 0) {
nu = nu*10;
sb.append(nu/de);
nu = nu%de;
if (map.containsKey(nu)) {
String pre = sb.substring(0, map.get(nu));
String loop = sb.substring(map.get(nu));
return inte + "." + pre + "("+ loop +")";
}
pos++;
map.put(nu, pos);
}
return inte + "." + sb.toString();
}
return inte;
}
}