如何对golang中的整数求操作中最接近的int?

问题描述 投票:0回答:2

我想得到一个包含两个整数除法的运算的最接近值。我的初始函数就是这样,它总是四舍五入到较低的整数。

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

例如,当结果为5.75时,我想四舍五入为6,但是上面的函数返回5

我尝试使用math.Round,但它需要接收float类型并返回浮点类型。因此,如果操作中有许多参数,则需要进行大量转换,这很脏。

所以我想知道什么是最简单的舍入方式舍入到最接近的整数?

go rounding
2个回答
1
投票

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

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

1
投票

您的操作使用的是所有整数,因此输出将是整数,因此绝对需要先将它们转换为浮点数,然后才能将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)
}
© www.soinside.com 2019 - 2024. All rights reserved.