Come si converte una lunga stringa di cifre (50 cifre) in un numero intero in Vai?Utilizzo di valori interi di grandi dimensioni in Vai? (ParseInt converte solo fino a "2147483647"?)
sto ottenendo l'uscita per il codice qui sotto:
number = 2147483647
err = strconv.ParseInt: parsing "37107287533902102798797998220837590246510135740250 ": valore fuori campo
Sembra di essere in grado per convertire solo numeri fino a 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)
}
}
In genere i numeri interi sono memorizzati in 4 o 8 byte. Questo non è abbastanza vicino per memorizzare 50 cifre e 2147483647 corrisponde a (2^31-1), che è precisamente il limite di un intero con complemento a due firmato memorizzato in 4 byte (o, più precisamente, 32 bit). Verifica se Go ha un tipo "Big Integer". –