在Go中从float32转换为int

Goo*_*ine 29 casting rounding go

我已经尝试了几种方法将float转换为int,我想要的是截断一个float,所以我只得到整数部分.我正在使用

x := float32(3.1)
y,_ := strconv.Atoi((strconv.Ftoa32(x,'f',0))) //y becomes 3
Run Code Online (Sandbox Code Playgroud)

但是如果x是3.9,y将变为4,因为这个函数将围绕float32而不是截断.有没有一种截断而不是舍入的方法?如果是这样,是否可以在不涉及字符串的情况下进行?(比如在C中将float转换为int)

Chr*_*nch 51

只需使用int():

x := float32(3.1)
fmt.Println(int(x))
Run Code Online (Sandbox Code Playgroud)

3根据需要生成,而不必使用字符串转换等.

  • 多年后回顾起来,这就是为什么它令人困惑 - `int(3.2)` 失败是因为参数是一个常量,此外我对类型转换和类型断言感到困惑。作为一个 Go 新手,这很难理解。 (5认同)