Go 中从 float32 转换为 int

发布于 2024-12-14 16:29:39 字数 299 浏览 1 评论 0原文

我尝试了多种方法将浮点数转换为整数,我想要的是截断浮点数,这样我只得到整数部分。 我正在使用

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

But if x is 3.9, y will变成 4 因为这个函数将对 float32 进行四舍五入而不是截断。 有没有一种方法可以截断而不是四舍五入?如果是这样,是否可以在不涉及字符串的情况下做到这一点? (就像在 C 中将 float 转换为 int 一样)

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)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

痴骨ら 2024-12-21 16:29:43

只需使用 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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文