Большая крыса Go
Прежде чем вы решите, что я сошел с ума — речь на самом деле о типе big.Rat
.
В отличие от float64
, он позволяет работать с обыкновенными дробями (a/b) без потери точности.
Например, из школьного курса математики мы знаем, что 1/10 + 2/10 = 3/10. Однако, float64
другого мнения:
x := 0.1
y := 0.2
fmt.Println(x + y)
// 0.30000000000000004
А вот big.Rat
справляется с такими вычислениями без проблем:
x := big.NewRat(1, 10)
y := big.NewRat(2, 10)
z := new(big.Rat)
z.Add(x, y)
fmt.Println(z)
// 3/10
Если вдруг придется работать с обыкновенными дробями — имейте «крысу» в виду.
★ Подписывайтесь на новые заметки.