You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将math.Inf转换为整数?为何+Inf会转为负整数?

为什么math.Inf(1)转成int后变成了负整数?

原因解析

  • math.Inf(1)返回的是float64类型的正无穷大,64位系统下Go的int等价于int64,取值范围是-9223372036854775808到9223372036854775807。
  • 根据Go语言规范,当把超出int取值范围的浮点数转换为int时,会直接返回int类型的最小值(即-9223372036854775808)。正无穷和负无穷都远超出int的边界,所以两者转换后结果一致。

正确的初始化方式

如果要实现数组的最小/最大值比较,推荐两种初始化方式:

  1. 用数组第一个元素初始化(需先判断数组非空)
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)
}
  1. 用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 15:31:05