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

时间:2014-09-14 16:44:44

标签: algorithm

示例:

我试图弄清楚找出第三个值之间的两个值之间的百分比的计算。

示例:范围是46到195.值46将是0%,值195将是范围的100%。这个范围的百分比是65?

rangeMin = 46

的RangeMax = 195

= inputValue的65

inputPercentage =?

4 个答案:

答案 0 :(得分:109)

好吧,我会使用公式

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

对于你的例子,它将是

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

或稍长一点

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

如果您已经拥有百分比而且您正在寻找给定范围内的“输入值”,那么您可以使用Dustincomments提供的经过调整的公式:

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

答案 1 :(得分: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;
}

答案 2 :(得分:1)

如果要计算值列表的百分比并截断最大值和最小值之间的值,可以执行以下操作:

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]

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

答案 3 :(得分:0)

可用于缩放任意数量的变量

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])