我有一個數值範圍內的值(例如0..100
),我想將它翻譯成另一個範圍(例如到0..9
)。因此,結果將是:Kotlin中有沒有什麼方法可以將一個值從一個範圍轉換爲另一個範圍?
50 -> 4
或100 -> 9
,...
是否有任何科特林方法讓我在這方面?
我有一個數值範圍內的值(例如0..100
),我想將它翻譯成另一個範圍(例如到0..9
)。因此,結果將是:Kotlin中有沒有什麼方法可以將一個值從一個範圍轉換爲另一個範圍?
50 -> 4
或100 -> 9
,...
是否有任何科特林方法讓我在這方面?
計算原始範圍內的數字的比例。 乘以第二個範圍。
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)
感謝您的回答,這是正確的,只是想知道在Kotlin API中是否有任何功能,或者我必須這樣做。 –
不是我所知道的。你可以把它寫成擴展功能 –
我也這麼做了,謝謝 –
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
我沒有得到你的想法,什麼51將被轉換爲? –
@KrisRoofe 51將是4,直到我們到55和55到60之間,結果將是5.我想要將我的範圍轉移到一個新的範圍。 –
新的範圍還有100個元素? –