从百分比获取两个值范围之间的值

时间:2013-08-03 14:39:57

标签: c# percentage

  1. 假设我有两个值的范围: 5 ........... 98
  2. 让我们假设用户位置的滑块值为40

    1. 现在,我希望从范围1
    2. 的精确百分比位置获取另一个值范围的值

      假设第二个值范围是10 ......... 80

      int nRange1 = 98 - 5;
      int nRange2 = 80 - 10;
      
      int nValue1 = 40;
      
      int nPercentOnRange1 = ((nValue1 - 5) / nRange1)*100;
      

      现在我必须将Range2的值以nPercentOnRange1的确切百分比值获得,但我不知道如何

4 个答案:

答案 0 :(得分:2)

首先需要从第一个范围中找到%并将该%应用于新范围。

以下是我要做的事: Range1(A到B)选择的值:c 范围2(E到F)

范围1%=(C-A)/(B-A)* 100

范围2对应值=((F - E)*(范围1%)/ 100)+ E

C#:

 int Range1Min = 5, Range1Max=90, Range1SelectedValue = 40;
 int Range2Min = 6, Range2Max=80;
 decimal range1Percent = (Range1SelectedValue-Range1Min ) / (Range1Max-Range1Min) * 100.0
 decimal range2NewValue = (Range2Max - Range2Min) * range1Percent  / 100 + Range2Min;

答案 1 :(得分:1)

您需要的价值是

x = 10 + nRange2 * nPercentOnRange1 / 100.0

让我解释一下原因。您需要一个x的数字

((x - 10) / nRange2) * 100.0 = nPercentOnRange1

因此,只需解决x

((x - 10) / nRange2) * 100.0 = nPercentOnRange1 =>
((x - 10) / nRange2) = nPercentOnRange1 / 100.0 =>
x - 10 = nRange2 * nPercentOnRange1 / 100.0 =>
x = 10 + nRange2 * nPercentOnRange1 / 100.0

请注意,这实际上具有直观意义。我们说取百分比,将其缩放到第二个范围的长度(即nRange2 * nPercentOnRange1 / 100.0)正在做的事情,然后将其添加到第二个范围的下限。基本上我们在第二个范围内说步nPercentOnRange1%。这完全公式表达的内容。

答案 2 :(得分:1)

提防

int nPercentOnRange1 = ((nValue1 - 5)/ nRange1) * 100;
由于nValue1nRange1是整数,

结束为零。这可能会更好:

int nPercentOnRange1 = ((nValue1 - 5) * 100 / nRange1);

然后你可以做

  int nValue2 = 10 + nPercentOnRange1*nRange2/100;

答案 3 :(得分:0)

也许这会奏效:

nValue2 = nPercentage1 * nRange2 / 100 + 10