Kotlin 舍入整数

Kotlin Round Up An Integer

提问人: 提问时间:9/19/2022 更新时间:9/19/2022 访问量:482

问:

假设我有一个像 588 这样的整数和 我想将这个数字四舍五入到 590

艺术

397 -> 400,

233 -> 230

...

或者也许:

388 -> 400

77 -> 100

Kotlin 是否具有针对此类情况的功能?或者我需要为此创建自己的算法?我尝试使用 or,但我认为这些仅适用于四舍五入的双打。ceil()roundToInt()

Android Kotlin 数学

评论

0赞 JustSightseeing 9/19/2022
不确定你要四舍五入到什么,下一个一百个,十个?

答:

1赞 cactustictacs 9/19/2022 #1

您正在执行任意舍入,所以不,没有内置任何类似的东西 - 只有以各种方式舍入到最接近整数的函数。

你可以写一个基本的舍入函数,如下所示:

fun Int.roundToClosest(step: Int): Int {
    require(step > 0)
    // in this case 'lower' meaning 'closer to zero'
    val lower = this - (this % step)
    val upper = lower + if (this >= 0) step else -step
    return if (this - lower < upper - this) lower else upper
}

println(-5.roundToClosest(10))

>> -10

在这种情况下,它从零“向上舍入”,因此对于负数,它会增加它们的大小,而不是向正无穷大四舍五入。如果你想要行为(四舍五入到正无穷大),我会把它留给读者作为练习!ceil