将float32转换为int32

时间:2018-06-19 17:47:08

标签: go

我看到一些将float32转换为int32的奇怪行为:

var f float32 = math.MaxInt32

fmt.Printf("%d %0.1f %d\n", math.MaxInt32, f, int32(f))

打印

2147483647 2147483648.0 -2147483648

(在Go Playground:https://play.golang.org/p/SI0RtpZFkwa

我的猜测是,这里发生了一些事情,例如通用的IEEE浮点不精确度和不受限制的自动转换。我几乎会想到“一举成名”的错误,但是为什么要进行符号转换?

看起来像个错误,但至少,这是令人惊讶的。这出现在一个较大的系统中,该系统开始在边缘出现异常行为。

最终,我只希望能够以某种合理的方式将float32的值转换为int32

0 个答案:

没有答案