Golang中为什么int(4.4)无法正常工作?

Golang中为什么int(4.4)无法正常工作? Go Playground - The Go 编程语言

2 回复

Go语言不允许对无类型值进行类型转换,字面量 4.4 是一个浮点数,这一点编译器是知道的,但你没有指明是哪种浮点数类型(float64 还是 float32)?类型推断仅在你声明一个具有此值的变量时才起作用:

x := 4.4
var z int = int(x)

这是实用且正确的做法!

更多关于Golang中为什么int(4.4)无法正常工作?的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


在Go语言中,int(4.4) 无法正常工作是因为类型转换的规则限制。当将浮点数转换为整数时,Go会直接截断小数部分,而不是四舍五入。因此,int(4.4) 的结果是 4,这可能导致不符合预期的行为。

如果你需要四舍五入,可以使用 math.Round 函数。以下是一个示例代码:

package main

import (
    "fmt"
    "math"
)

func main() {
    f := 4.4
    // 直接转换,截断小数部分
    i := int(f)
    fmt.Println("直接转换:", i) // 输出: 4

    // 使用 math.Round 四舍五入
    rounded := int(math.Round(f))
    fmt.Println("四舍五入:", rounded) // 输出: 4

    // 另一个例子:4.6 会四舍五入到 5
    f2 := 4.6
    rounded2 := int(math.Round(f2))
    fmt.Println("四舍五入 4.6:", rounded2) // 输出: 5
}

注意:math.Round 返回的是 float64 类型,所以需要再次转换为 int。如果你需要处理负数或更复杂的舍入规则,可以使用 math.Floormath.Ceil 函数。

回到顶部