大数减法golang
Subtraction of large numbers golang
我不认为我必须写它,但我至少找不到一个大数减法的例子
所以我有两个数字,我想减去它们,库说只有内存限制,但是,当我尝试减去两个 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.4linux/amd64
操场上的这段代码:
https://play.golang.org/p/AY8Z8kkCRdg
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)
}
看来您需要在代码中使用 big.Int.SetString
。这是一个游乐场 link,在那里工作:https://play.golang.org/p/HvEke4g7e8V
对于那些不想点击 link 的人:
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)
}
我不认为我必须写它,但我至少找不到一个大数减法的例子
所以我有两个数字,我想减去它们,库说只有内存限制,但是,当我尝试减去两个 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.4linux/amd64
操场上的这段代码: https://play.golang.org/p/AY8Z8kkCRdg
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)
}
看来您需要在代码中使用 big.Int.SetString
。这是一个游乐场 link,在那里工作:https://play.golang.org/p/HvEke4g7e8V
对于那些不想点击 link 的人:
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)
}