Как рассчитать процент между диапазоном двух значений, третье значение
Пример:
Я пытаюсь вычислить вычисление для нахождения процента между двумя значениями, которое имеет третье значение.
Пример: диапазон от 46 до 195. Значение 46 будет 0%, а значение 195 будет 100% от диапазона. Какой процент от этого диапазона составляет значение 65?
RangeMin = 46
RangeMax = 195
InputValue = 65
inputPercentage =?
Ответы
Ответ 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]
где проценты являются относительными и помещаются между минимальным и максимальным значениями.