1
  1. 假设我有两个值的范围:5...........98

让我们假设用户位置的滑块值为 40

  1. 现在我想从范围1的确切百分比位置的另一个值范围中获取值

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

int nRange1 = 98 - 5;
int nRange2 = 80 - 10;

int nValue1 = 40;

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

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

4

4 回答 4

3

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

这是我要做的: Range1(A 到 B) 选择的值:c Range2(E 到 F)

范围 1 % = (CA) / (BA) * 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;
于 2013-08-03T14:48:52.470 回答
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步入第二个范围。这正是公式所表达的。

于 2013-08-03T14:45:53.090 回答
1

当心

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

最终为零,因为nValue1nRange1是整数。这可能会更好:

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

然后你可以做

  int nValue2 = 10 + nPercentOnRange1*nRange2/100;
于 2013-08-03T14:49:41.543 回答
0

也许这会起作用:

nValue2 = nPercentage1 * nRange2 / 100 + 10
于 2013-08-03T14:46:11.780 回答