Нормализовать диапазон от -100 до 100 до 0 до 3 - PullRequest
0 голосов
/ 03 июля 2018

У меня есть диапазон номеров -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.

1 Ответ

0 голосов
/ 03 июля 2018

Попробуйте это:

double Normalize(double val, double valmin, double valmax, double min, double max) 
{
    return (((val - valmin) / (valmax - valmin)) * (max - min)) + min;
}

(при условии, что valmin и valmax составляют от -100 до 100, а min и max от 0 до 3)

Редактировать: следует добавить минимальное значение в конце, не вычитать

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...