英文:
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.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论