在Go中将float32转换为int

huangapple go评论70阅读模式
英文:

cast from float32 to int in Go

问题

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

x := float32(3.1)
y,_ := strconv.Atoi((strconv.Ftoa32(x,'f',0))) //y变为3

但是如果x是3.9,y将变为4,因为这个函数会四舍五入float32而不是截断。
有没有一种截断而不是四舍五入的方法?如果有,是否可以在不涉及字符串的情况下实现?(类似于在C中将浮点数转换为整数)

英文:

I have tried several ways to cast a float to an int, what I want is to truncate a float so I only get the integer part.
I'm using

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

But if x is 3.9, y will become 4 because this function will round the float32 instead of truncating.
Is there a way of truncating instead of rounding? and if so, is it possible to do it without involving strings? (like casting a float to int in C)

答案1

得分: 63

只需使用int()

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

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

英文:

Just use int():

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

Which produces 3 as needed, without having to use string conversions or the like.

huangapple
  • 本文由 发表于 2011年11月10日 03:07:29
  • 转载请务必保留本文链接:https://go.coder-hub.com/8070205.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定