Метод big.Int.Mul

Метод big.Int.Mul выполняет умножение двух больших целых чисел и возвращает их произведение. Первым параметром метод принимает множимое, вторым — множитель. Результат умножения сохраняется в вызывающем объекте, который также возвращается для удобства цепочных вызовов. Метод работает с числами произвольной точности, что позволяет выполнять умножение чисел, выходящих за пределы стандартных целочисленных типов Go.

Синтаксис

gofunc (z *big.Int) Mul(x, y *big.Int) *big.Int

Пример

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

gopackage main

import (
  "fmt"
  "math/big"
)

func main() {
  x := big.NewInt(123456789)
  y := big.NewInt(987654321)
  res := new(big.Int).Mul(x, y)

  fmt.Println(res)
}

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

go"121932631112635269"

Пример

Давайте перемножим большие числа, которые не помещаются в 64-битный целочисленный тип:

gopackage main

import (
  "fmt"
  "math/big"
)

func main() {
  a := new(big.Int)
  a.SetString("9223372036854775807", 10) // MaxInt64
  
  b := new(big.Int)
  b.SetString("9223372036854775807", 10) // MaxInt64
  
  res := new(big.Int).Mul(a, b)
  fmt.Println(res)
}

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

go"85070591730234615847396907784232501249"

Пример

Давайте используем цепочку вызовов для последовательного умножения:

gopackage main

import (
  "fmt"
  "math/big"
)

func main() {
  x := big.NewInt(2)
  y := big.NewInt(3)
  z := big.NewInt(4)
  
  res := new(big.Int).Mul(x, y).Mul(res, z)
  fmt.Println(res)
}

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

go"24"

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

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