funcfractionToDecimal(numerator int, denominator int)string { if numerator == 0 { return"0" } ans := []byte{} if (numerator > 0) != (denominator > 0) { ans = append(ans, '-') } num := abs(numerator) den := abs(denominator) ans = append(ans, toByte(num / den)...) rem := num % den if rem == 0 { returnstring(ans) } ans = append(ans, '.') d := make(map[int]int) for rem != 0 { if index, exists := d[rem]; exists { ans = append(ans[:index+1], ans[index:]...) ans[index] = '(' ans = append(ans, ')') break } d[rem] = len(ans) rem *= 10 ans = append(ans, toByte(rem / den)...) rem %= den } returnstring(ans) }
funcabs(x int)int { if x < 0 { return -x } return x }