Kotlin中如何用向上取整替代.toInt()的向下取整?
Kotlin 实现向上取整转Int
浮点数转Int的向上取整
如果是处理Double或Float类型的浮点数向上取整,直接用Math.ceil()方法即可——它会返回向正无穷方向取整后的Double值,再调用toInt()转成整数:
// 正数场景 val positiveNum = 3.14 val roundedUpPositive = Math.ceil(positiveNum).toInt() // 结果:4 // 负数场景 val negativeNum = -3.14 val roundedUpNegative = Math.ceil(negativeNum).toInt() // 结果:-3
注意:ceil()的逻辑是向正无穷取整,所以负数的向上取整结果会比原数大(比如-3.14取整后是-3),完全符合向上取整的定义。
整数除法的向上取整
如果是两个整数相除需要向上取整(比如5 / 2默认得到2,但我们需要3),可以用两种方式:
- 简易公式(适用于除数为正的场景)
使用(被除数 + 除数 - 1) / 除数的公式,无需浮点运算:val dividend = 5 val divisor = 2 val result = (dividend + divisor - 1) / divisor // 结果:3 // 负数被除数的情况 val negativeDividend = -5 val positiveDivisor = 2 val negativeResult = (negativeDividend + positiveDivisor - 1) / positiveDivisor // 结果:-2 - 浮点转换法(通用所有场景)
将其中一个数转成浮点数,用Math.ceil()取整后再转回Int,不管除数正负都能得到正确结果:val dividend = 5 val divisor = -2 val result = Math.ceil(dividend.toDouble() / divisor).toInt() // 结果:-2
内容的提问来源于stack exchange,提问作者user19729496
相关产品推荐
相关产品推荐

