在Kotlin中有没有什么方法可以将一个范围的值转换成另一个范围?

我有一个数值范围内的值(例如0..100 ),我想把它翻译成另一个范围,(例如0..9 )。 所以结果是:

50 -> 4100 -> 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