У меня есть диапазон номеров -100
до 100
.
Я пытаюсь нормализовать его до 0
до 3
с десятичными знаками.
-100 = 0
-50 = 0.75
0 = 1.5
50 = 2.25
100 = 3
Я хочу создать программную функцию для нормализации любого диапазона к любому значению, например:
http://rextester.com/ZJWNS24313
double Normalize(double val, double valmin, double min, double max)
{
return (val - valmin) / (max - min);
}
Однако это не дает правильного вывода.
100
становится 66.6666666666667
вместо 3
.
Если я умножу формулу на десятичное число 0.045
, получится правильно.
((100 - -100) / (3 - 0)) * 0.045
= 3
((50 - -100) / (3 - 0)) * 0.045
= 2.25
((-50 - -100) / (3 - 0)) * 0.045
= 0.75
Но как сделать формулу, чтобы мне не приходилось указывать десятичное число в конце?
Потому что, если бы я хотел нормализовать новый номер с 0
до 5
, мне пришлось бы изменить его на 0.125
.