提问人: 提问时间:9/19/2022 更新时间:9/19/2022 访问量:482
Kotlin 舍入整数
Kotlin Round Up An Integer
问:
假设我有一个像 588 这样的整数和 我想将这个数字四舍五入到 590
艺术
397 -> 400,
233 -> 230
...
或者也许:
388 -> 400
77 -> 100
Kotlin 是否具有针对此类情况的功能?或者我需要为此创建自己的算法?我尝试使用 or,但我认为这些仅适用于四舍五入的双打。ceil()
roundToInt()
答:
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
评论