大量golang的减法

问题描述 投票:-2回答:2

我不认为我必须写它,但我无处可以找到至少减去大数的例子

所以我有两个数字,我想减去它们,库说只有内存限制,但是,当我尝试减去两个256位数时,我得到一个错误。

告诉我该怎么做以及如何解决它?我开始研究围棋,一切似乎都很酷,但我不断遇到类似的问题。怎么了.......

package main

import (
    "fmt"
    "math/big"
)

func main() {
    a := big.NewInt(113792089237316195423570985008687907853269984665640564039457584007908834671645)
    b := big.NewInt(20277110887056303803699431755396003735040374760118964734768299847012543114150)
    c := big.NewInt(0).Sub(a, b)
    fmt.Println("c =", c)
}

输出:

*prog.go:9:18: constant 113792089237316195423570985008687907853269984665640564039457584007908834671645 overflows int64
prog.go:10:18: constant 20277110887056303803699431755396003735040374760118964734768299847012543114150 overflows int64*

我正在使用go版本go1.12.4 linux / amd64

这个代码在操场上:https://play.golang.org/p/AY8Z8kkCRdg

go biginteger
2个回答
2
投票

看起来您需要在代码中使用big.Int.SetString。这是一个游乐场链接,在那里工作:https://play.golang.org/p/HvEke4g7e8V

对于那些不想点击链接的人:

package main

import (
    "fmt"
    "math/big"
)

func main() {
    a, _ := new(big.Int).SetString("113792089237316195423570985008687907853269984665640564039457584007908834671645", 10)
    b, _ := new(big.Int).SetString("20277110887056303803699431755396003735040374760118964734768299847012543114150", 10)
    c := big.NewInt(0).Sub(a, b)
    fmt.Println("c =", c)
}


0
投票

mde .... .......

package main

import (
    "fmt"
    "math/big"
)

func main() {
    i := new(big.Int)
    i.SetString("113792089237316195423570985008687907853269984665640564039457584007908834671645", 10)
    k := new(big.Int)
    k.SetString("20277110887056303803699431755396003735040374760118964734768299847012543114150", 10) 
    c := big.NewInt(0).Sub(i, k)
    fmt.Println("c =", c)
}

https://play.golang.org/p/AuGj9A93FbP

© www.soinside.com 2019 - 2024. All rights reserved.