Довольно много решений, ни одно из них не решило мою проблему.
Eclipse Oxygen 3a, апрель 2018 года, установщик работает нормально,
Моя проблема - запуск Eclipse на DCEVM JRE. Указание Eclipse на немодифицированную JVM решило эту проблему.
NewValue = (((OldValue - OldMin) * (NewMax - NewMin)) / (OldMax - OldMin)) + NewMin
Или немного более читабельно:
OldRange = (OldMax - OldMin)
NewRange = (NewMax - NewMin)
NewValue = (((OldValue - OldMin) * NewRange) / OldRange) + NewMin
Или, если вы хотите защитить от случая, когда старый диапазон равен 0 ( OldMin = OldMax ):
OldRange = (OldMax - OldMin)
if (OldRange == 0)
NewValue = NewMin
else
{
NewRange = (NewMax - NewMin)
NewValue = (((OldValue - OldMin) * NewRange) / OldRange) + NewMin
}
Обратите внимание, что в этом случае мы вынужден произвольно выбрать одно из возможных новых значений диапазона. В зависимости от контекста разумный выбор может быть следующим: NewMin
( см. Образец ), NewMax
или (NewMin + NewMax) / 2
Это простое линейное преобразование.
new_value = ( (old_value - old_min) / (old_max - old_min) ) * (new_max - new_min) + new_min
Таким образом, преобразование 10000 по шкале от -16000 до 16000 в новую шкалу от 0 до 100 дает:
old_value = 10000
old_min = -16000
old_max = 16000
new_min = 0
new_max = 100
new_value = ( ( 10000 - -16000 ) / (16000 - -16000) ) * (100 - 0) + 0
= 81.25