Kotlin 中是否有任何方法可以让我将一个范围内的值转换为另一个范围?

Moh*_*ini 3 range kotlin

我有一个数字范围内的值(例如0..100),我想将其转换为另一个范围(例如 to 0..9)。所以结果将是:

50 -> 4或者100 -> 9……

Kotlin 中是否有任何方法可以在这方面帮助我?

Ben*_*oli 5

计算原始范围内数字的比率。将其乘以第二个范围。

fun convert(number: Int, original: IntRange, target: IntRange): Int {
    val ratio = number.toFloat() / (original.endInclusive - original.start)
    return (ratio * (target.endInclusive - target.start)).toInt()
}
Run Code Online (Sandbox Code Playgroud)

作为扩展函数

fun IntRange.convert(number: Int, target: IntRange): Int {
    val ratio = number.toFloat() / (endInclusive - start)
    return (ratio * (target.endInclusive - target.start)).toInt()
}

val result =  (0..100).convert(50, 0..9)
Run Code Online (Sandbox Code Playgroud)