如何在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)
}
我想获得涉及两个整数除法的运算的最接近值。我的初始函数是这样的,它总是舍入到较低的整数。
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)
}