如何在golang中的整数运算中获得最近的int?

How to get nearest int in operation on integers in golang?

我想获得涉及两个整数除法的运算的最接近值。我的初始函数是这样的,它总是舍入到较低的整数。

func Percent(x int, y int) int {
            p := x * 100 / y
            return p
}

所以比如当结果是5.75的时候,我想四舍五入到6,但是上面的函数returns 5.

我尝试使用 math.Round 但它需要接收 float 类型和 returns 浮点类型。所以这需要大量的转换,当操作中有很多参数时,这些转换会变脏。

所以我想知道舍入到最接近的整数的简洁惯用方法是什么?

只需从整数创建浮点值,然后从四舍五入的浮点结果创建一个整数值:

func RoundPercent(x int, y int) int {
    p := float64(x * 100) / float64(y)
    return int(math.Round(p))
}

您的操作全部使用整数,因此输出将是一个整数,因此您肯定需要先将它们转换为浮点数,然后您可以将 float 转换为最接近的 int (5.75到 5)

因为下面的代码适合你。 你甚至不需要使用math.Round

func Percent(x int, y int) int {
    p := float64(x * 100) / float64(y)
    return int(p+0.5)
}