让我们假设用户位置的滑块值为40
假设第二个值范围是10 ......... 80
int nRange1 = 98 - 5;
int nRange2 = 80 - 10;
int nValue1 = 40;
int nPercentOnRange1 = ((nValue1 - 5) / nRange1)*100;
现在我必须将Range2的值以nPercentOnRange1的确切百分比值获得,但我不知道如何
答案 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;
由于nValue1
和nRange1
是整数,结束为零。这可能会更好:
int nPercentOnRange1 = ((nValue1 - 5) * 100 / nRange1);
然后你可以做
int nValue2 = 10 + nPercentOnRange1*nRange2/100;
答案 3 :(得分:0)
也许这会奏效:
nValue2 = nPercentage1 * nRange2 / 100 + 10