go - 在将float转换为int时如何舍入到最近的int

将 float 转换为 int 时,将丢弃小数。什么是干净的投射方式,以便它四舍五入到最接近的整数。

x := int(3.6) 应该等于 4 而不是 3。


呼啦一阵风
浏览 399回答 2
2回答

长风秋雁

int(f+0.5) 如果 >= .5 会导致它向上舍入

拉风的咖菲猫

int(math.Round(f))在 Go 中将浮点数转换为 int 时,您可以使用舍入到最接近的整数。当浮点数设置为字节或符文时,小数也会被丢弃。当它设置为字符串或布尔值时,不会发生截断。package mainimport (  . "fmt"  . "math")func main() {  f := 3.6  c := []interface{}{byte(f), f, int(Round(f)), rune(f), Sprintf("%.f", f), f != 0}  checkType(c)}func checkType(s []interface{}) {  for k, _ := range s {     Printf("%T %v\n", s[k], s[k])  }}Round 返回最接近的整数,从零四舍五入。请参阅https://golang.org/pkg/math/#Round。请参阅https://stackoverflow.com/a/61503758/12817546。f := 3.6截断为“uint8 3”,f为“float64 3.6”,int(Round(f))向上舍入为“int 4”, rune(f)截断为“int32 3”, Sprintf("%.f", f)为“string 3.6”并f != 0输出“bool true”。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go