在Kotlin中有没有什么方法可以将一个范围的值转换成另一个范围?
我有一个数值范围内的值(例如0..100
),我想把它翻译成另一个范围,(例如0..9
)。 所以结果是:
50 -> 4
或100 -> 9
,…
Kotlin有什么方法可以帮助我吗?
计算原始范围内的数字的比例。 乘以第二个范围。
fun convert(number: Int, original: IntRange, target: IntRange): Int { val ratio = number.toFloat() / (original.endInclusive - original.start) return (ratio * (target.endInclusive - target.start)).toInt() }
作为扩展功能
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)
val r2 = IntRange(0, 100).filter { it %10 ==0 }.map { it /10 }
我认为这应该工作,
val original = 0..100 val new = original.step((original.endInclusive - original.start) / 9).map{it /10}.forEach{ println(it)}
输出,
0 1 2 3 4 5 6 7 8 9