Intereting Posts
Класс данных Котлина, комната Android и пользовательский сеттер Студия андроида Kotlin Я пытаюсь изменить текст кнопки, но получаю сообщение «exepected a value of boolean» Метод равенства для класса данных в котлине Что такое многостраничное текстовое разделение текста приложения Зачем нужен репозиторий и сервис + контракт Получите результат от Observable – Kotin Android Документация Kotlin не поддерживает теги типа «<p>» Как полезна делегация Котлина? Откуда берутся три тестовых контейнера? Возможно ли, чтобы Java создала перегрузку метода с аргументами по умолчанию, такими как Kotlin? Получение ошибки «Несовместимые типы» при использовании кода, сгенерированного из класса данных Kotlin Котлин: лямбда никогда не компилируется Есть ли способ написать функцию расширения, которая изменяет значение объекта? Неопределенная ссылка в Android Studio 3 Canary Recyclerview: прослушивание событий с добавлением кликов

Есть ли какой-нибудь метод в Kotlin, который позволяет мне перевести значение из диапазона в другой диапазон?

У меня есть значение внутри диапазона чисел (например, 0..100 ), который я хочу перевести в другой диапазон (например, до 0..9 ). Таким образом, результат будет следующим:

50 -> 4 или 100 -> 9 , …

Есть ли какой-нибудь метод в Котлине, который помогает мне в этом отношении?

Solutions Collecting From Web of "Есть ли какой-нибудь метод в 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