英文:
strconv.ParseInt: parsing "18446744073709551615": value out of range
问题
使用strconv.ParseInt
函数解析uint64
的最大值时,出现错误是正常行为吗?
我使用以下代码进行解析:
i, err := strconv.ParseInt("18446744073709551615", 10, 64)
fmt.Println(i, err)
我得到了一个错误:"strconv.ParseInt: parsing "18446744073709551615": value out of range"
,但是uint64
的最大允许值是:18446744073709551615。
你能解释这种行为吗?
你可以在以下链接中查看相关代码:
https://golang.org/src/builtin/builtin.go?s=1026:1044#L26
英文:
Is it a normal behavior when parsing uint64 max value with strconv.ParseInt
?
i, err := strconv.ParseInt("18446744073709551615", 10, 64)
fmt.Println(i, err)
I got an error: "strconv.ParseInt: parsing "18446744073709551615": value out of range"
, when maximum allowed value for uint64 is: 18446744073709551615
Can you explain such behavior?
答案1
得分: 7
调用ParseUint函数来解析无符号整数。
ParseInt函数用于解析有符号整数。最大的有符号整数是9223372036854775807。
英文:
Call ParseUint to parse an unsigned integer.
The ParseInt function parses signed integers. The maximum signed integer is 9223372036854775807.
答案2
得分: 5
根据评论,我将您的代码重新编写如下:
package main
import (
"fmt"
"strconv"
)
func main() {
i, err := strconv.ParseUint("18446744073709551615", 10, 64)
fmt.Println(i, err)
}
输出结果:
18446744073709551615 <nil>
英文:
Based the comments ,I reproduced your code as follows:
package main
import (
"fmt"
"strconv"
)
func main() {
i, err := strconv.ParseUint("18446744073709551615", 10, 64)
fmt.Println(i, err)
}
Output:
18446744073709551615 <nil>
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论