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

如何在Go中将一长串数字(50位数字)转换为整数?


我正在获取以下代码的输出:


number = 2147483647

err = strconv.ParseInt:解析“ 37107287533902102798797998220837590246510135740250”:值超出范围


它似乎最多只能转换数字2147483647。


package main


import "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)

    }   

}


智慧大石
浏览 229回答 1
1回答

Smart猫小萌

您需要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)        }    }}这是它起作用的一个简单示例。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go