在Go语言中将float32转换为int

36

我尝试了几种方法将一个浮点数转换为整数,我想要的是截断浮点数,只获取整数部分。

我正在使用

x := float32(3.1)
y,_ := strconv.Atoi((strconv.Ftoa32(x,'f',0))) //y becomes 3
但如果x是3.9,y会变成4,因为这个函数会四舍五入float32而不是截断它。 有没有一种方法可以截断而不是四舍五入?如果可以,是否可能不涉及字符串呢?(比如在C中将float强制转换为int)
1个回答

64

只需使用 int() 方法:

x := float32(3.1)
fmt.Println(int(x))

这会产生所需的 3,而无需使用字符串转换或类似方法。


4
回顾多年后,原因在于它很令人困惑 - int(3.2) 失败是因为参数是一个常量,此外我对类型转换和类型断言感到困惑。作为 Go 的新手,这很难理解。 - Goodwine

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接