classSolution { public String fractionToDecimal(int numerator, int denominator) { longa= numerator, b = denominator; if (a % b == 0) { return String.valueOf(a / b); }
StringBuildersb=newStringBuilder();
if (a * b < 0) { sb.append("-"); a = Math.abs(a); b = Math.abs(b); }
// 小数点前的部分单独计算以便于添加小数点,计算后 a 需要更新为余数 sb.append(a / b).append("."); a = a % b; // 此时 a 小于 b, 即准备计算小数点后面的部分
Map<Long, Integer> numToNextIndexMap = newHashMap<>(); while (a != 0) { // 记录当前余数对应的下一个索引(不含) numToNextIndexMap.put(a, sb.length()); a *= 10; // 余数补 0, 此时还未生成新的余数 sb.append(a / b); a %= b; // 此时计算出了新的余数