如何计算百分比之间的两个值的范围第三个值是什么

Example:

我试图计算出两个值之间的百分比和第三个值之间的百分比。

Example: The range is 46 to 195. The value 46 would 0%, and the value 195 would be 100% of the range. What percentage of this range is the value 65?

Range-Min = 46

Range 最大值 = 195

inputValue=65

InputPercentage = ?

96834 次浏览

我会用公式

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

以你的例子来说

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

Or a little bit longer

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

如果你已经有了百分比,并且你在一个给定的范围内寻找“输入值”,那么你可以使用 Dustin评论中提供的调整后的公式:

value = (percentage * (max - min) / 100) + min

我把这个函数放在一起来计算。它还提供了设置一个中途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

The function

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;
}

如果你想计算一个值列表的百分比,并截断最大值和最小值之间的值,你可以这样做:

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]

其中百分比是相对的,并置于最小值和最大值之间。

Can be used for scaling any number of variables

Python 实现:

# List1 will contain all the variables
list1 = []
# append all the variables in list1
list1.append(var1)
list1.append(var2)
list1.append(var3)
list1.append(var4)




# Sorting the list in ascending order
list1.sort(key = None, reverse = False)


# Normalizing each variable using ( X_Normalized = (X - X_minimum) / (X_Maximum - X_minimum)  )
normalized_var1 = (var1 - list1[0]) / (list1[-1] - list1[0])
normalized_var2 = (var2 - list1[0]) / (list1[-1] - list1[0])
normalized_var3 = (var3 - list1[0]) / (list1[-1] - list1[0])
normalized_var4 = (var4 - list1[0]) / (list1[-1] - list1[0])