| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364 | package mainimport (	"strconv"	"strings")func fractionToDecimal(numerator int, denominator int) string {	isNegtive := (numerator > 0 && denominator < 0) ||		(numerator < 0 && denominator > 0)	numer, deno := int64(numerator), int64(denominator)	if isNegtive {		numer = absInt64(numer)		deno = absInt64(deno)	}	remainder := make(map[int64]int, 0) // 0 means not in dict yet	digits := make([]int64, 0)	remain := numer % deno	digit := numer / deno	for remainder[remain] == 0 {		digits = append(digits, digit)		remainder[remain] = len(digits)		remain *= 10		digit = remain / deno		remain %= deno	}	if digit != 0 {		digits = append(digits, digit)	}	var sb strings.Builder	sb.WriteString(strconv.Itoa(int(digits[0])))	hasLoop := false	for i := 1; i < len(digits); i++ {		if i == 1 {			sb.WriteByte('.')		}		if i == remainder[remain] {			sb.WriteByte('(')			hasLoop = true		}		sb.WriteByte(byte(digits[i]) + '0')	}	if hasLoop {		sb.WriteByte(')')	}	if isNegtive {		return "-" + sb.String()	}	return sb.String()}func absInt64(x int64) int64 {	if x < 0 {		return -int64(x)	}	return int64(x)}// func main() {// 	println(fractionToDecimal(-1, -2147483648))// 	println(fractionToDecimal(-50, 8))// 	println(fractionToDecimal(2, 1))// 	println(fractionToDecimal(0, -5))// }
 |