Подтвердить что ты не робот

Как рассчитать процент между диапазоном двух значений, третье значение

Пример:

Я пытаюсь вычислить вычисление для нахождения процента между двумя значениями, которое имеет третье значение.

Пример: диапазон от 46 до 195. Значение 46 будет 0%, а значение 195 будет 100% от диапазона. Какой процент от этого диапазона составляет значение 65?

RangeMin = 46

RangeMax = 195

InputValue = 65

inputPercentage =?

4b9b3361

Ответ 1

Ну, я бы использовал формулу

((input - min) * 100) / (max - min)

Для вашего примера это будет

((65 - 46) * 100) / (195 - 46) = 12.75

Или немного дольше

range = max - min
correctedStartValue = input - min
percentage = (correctedStartValue * 100) / range 

Если у вас уже есть процент, и вы ищете "входное значение" в заданном диапазоне, вы можете использовать скорректированную формулу, предоставленную Dustin в комментариях:

val = ((percent * (max - min) / 100) + min

Ответ 2

Я собрал эту функцию, чтобы вычислить ее. Это также дает возможность установить среднюю точку 100%, которая затем возвращается.

Использование

//[] = optional
rangePercentage(input, minimum_range, maximum_normal_range, [maximum_upper_range]);

rangePercentage(250, 0, 500); //returns 50 (as in 50%)

rangePercentage(100, 0, 200, 400); //returns 50
rangePercentage(200, 0, 200, 400); //returns 100 
rangePercentage(300, 0, 200, 400); //returns 50 

Функция

function rangePercentage (input, range_min, range_max, range_2ndMax){

    var percentage = ((input - range_min) * 100) / (range_max - range_min);

    if (percentage > 100) {

        if (typeof range_2ndMax !== 'undefined'){
            percentage = ((range_2ndMax - input) * 100) / (range_2ndMax - range_max);
            if (percentage < 0) {
                percentage = 0;
            }
        } else {
            percentage = 100;
        }

    } else if (percentage < 0){
        percentage = 0;
    }

    return percentage;
}

Ответ 3

Если вы хотите рассчитать проценты списка значений и усечь значения между макс и минусом, вы можете сделать что-то вроде этого:

private getPercentages(arr:number[], min:number=0, max:number=100): number[] {
  let maxValue = Math.max( ...arr );

  return arr.map((el)=>{
    let percent = el * 100 / maxValue;
    return percent * ((max - min) / 100) + min;
  });
};

Здесь вызов функции:

this.getPercentages([20,30,80,200],20,50);

вернет

[23, 24.5, 32, 50]

где проценты являются относительными и помещаются между минимальным и максимальным значениями.