【问题标题】:cast from float32 to int in Go在 Go 中从 float32 转换为 int
【发布时间】:2011-12-25 14:14:13
【问题描述】:

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

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

但如果 x 为 3.9,y 将变为 4,因为此函数将舍入 float32 而不是截断。 有没有一种截断而不是舍入的方法?如果是这样,是否可以在不涉及字符串的情况下做到这一点? (就像在 C 中将浮点数转换为 int 一样)

【问题讨论】:

    标签: casting go rounding


    【解决方案1】:

    只需使用int():

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

    根据需要生成3,而无需使用字符串转换等。

    【讨论】:

    • 多年后回顾,这就是为什么它令人困惑 - int(3.2) 失败,因为参数是一个常量,另外我对类型转换与类型断言感到困惑。作为围棋新手,这很难理解。
    猜你喜欢
    • 2021-07-30
    • 2011-12-22
    • 2013-04-05
    • 2016-02-17
    • 1970-01-01
    • 2016-12-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多