为了账号安全,请及时绑定邮箱和手机立即绑定

在Go中使用大整数值?(ParseInt最多只能转换为“ 2147483647”吗?)

在Go中使用大整数值?(ParseInt最多只能转换为“ 2147483647”吗?)

Go
智慧大石 2021-04-27 13:14:28
如何在Go中将一长串数字(50位数字)转换为整数?我正在获取以下代码的输出:number = 2147483647err = strconv.ParseInt:解析“ 37107287533902102798797998220837590246510135740250”:值超出范围它似乎最多只能转换数字2147483647。package mainimport "fmt"import "io/ioutil"import "strings"import "strconv"var (        number int64)func main() {    fData,err := ioutil.ReadFile("one-hundred_50.txt")    if err != nil {            fmt.Println("Err is ",err)        }       strbuffer := string(fData)    lines := strings.Split(strbuffer, "\n")    for i, line := range lines {        fmt.Printf("%d: %s\n", i, line)        number, err := strconv.Atoi(line)        fmt.Println("number = ", number)        fmt.Println("err = ", err)    }   }
查看完整描述

1 回答

?
Smart猫小萌

TA贡献1911条经验 获得超7个赞

您需要math / big软件包,该软件包提供任意精度的整数支持。


import "math/big"


func main() {

    // ...

    for i, line := range lines {

        bi := big.NewInt(0)

        if _, ok := bi.SetString(line, 10); ok {

            fmt.Printf("number = %v\n", bi)

        } else {

            fmt.Printf("couldn't interpret line %#v\n", line)

        }

    }

}

这是它起作用的一个简单示例。


查看完整回答
反对 回复 2021-05-10
  • 1 回答
  • 0 关注
  • 228 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信