如何将math.Inf转换为整数?为何+Inf会转为负整数?
为什么math.Inf(1)转成int后变成了负整数?
原因解析
math.Inf(1)返回的是float64类型的正无穷大,64位系统下Go的int等价于int64,取值范围是-9223372036854775808到9223372036854775807。- 根据Go语言规范,当把超出
int取值范围的浮点数转换为int时,会直接返回int类型的最小值(即-9223372036854775808)。正无穷和负无穷都远超出int的边界,所以两者转换后结果一致。
正确的初始化方式
如果要实现数组的最小/最大值比较,推荐两种初始化方式:
- 用数组第一个元素初始化(需先判断数组非空)
func snippet(arr []int) { if len(arr) == 0 { fmt.Println("数组为空") return } least := arr[0] greatest := arr[0] // 遍历数组更新最值 for _, num := range arr { if num < least { least = num } if num > greatest { greatest = num } } fmt.Println("最小值:", least, "最大值:", greatest) }
- 用
math包提供的整数极值常量初始化
import ( "fmt" "math" ) func snippet(arr []int) { least := math.MaxInt64 greatest := math.MinInt64 for _, num := range arr { if num < least { least = num } if num > greatest { greatest = num } } fmt.Println("最小值:", least, "最大值:", greatest) }
内容的提问来源于stack exchange,提问作者rusted_ruby
相关产品推荐
相关产品推荐

