Метод big.Int.Sub

Метод Sub типа big.Int выполняет вычитание двух больших целых чисел. В первый параметр передается уменьшаемое (левая часть вычитания), во второй параметр - вычитаемое (правая часть). Результат операции сохраняется в переменной, для которой вызывается метод, и также возвращается как результат. Метод позволяет работать с числами, выходящими за пределы стандартных типов, таких как int64 или uint64.

Синтаксис

goz.Sub(x, y)

Где z - приемник результата, x - уменьшаемое, y - вычитаемое.

Пример

Давайте выполним вычитание двух больших чисел 9876543210 и 1234567890:

gopackage main

import (
  "fmt"
  "math/big"
)

func main() {
  x := big.NewInt(9876543210)
  y := big.NewInt(1234567890)
  z := new(big.Int)
  
  z.Sub(x, y)
  fmt.Println(z)
}

Результат выполнения кода:

go8641975320

Пример

Метод Sub может использовать один и тот же объект в качестве приемника и одного из операндов. Давайте вычтем из числа само себя:

gopackage main

import (
  "fmt"
  "math/big"
)

func main() {
  x := big.NewInt(100)
  
  x.Sub(x, x)
  fmt.Println(x)
}

Результат выполнения кода:

go0

Пример

Вычитание больших чисел с разными знаками. Вычтем отрицательное число из положительного:

gopackage main

import (
  "fmt"
  "math/big"
)

func main() {
  x := big.NewInt(50)
  y := big.NewInt(-30)
  z := new(big.Int)
  
  z.Sub(x, y)
  fmt.Println(z)
}

Результат выполнения кода:

go80

Как видно, вычитание отрицательного числа равносильно сложению с положительным.

Смотрите также

  • метод big.Int.Add,
    который выполняет сложение больших целых чисел
  • метод big.Int.Mul,
    который выполняет умножение больших целых чисел
  • метод big.Int.Div,
    который выполняет деление больших целых чисел
  • метод big.Int.Mod,
    который вычисляет остаток от деления больших целых чисел