1
  1. 2 つの値の範囲があるとしましょう: 5.........98

ユーザーの位置が値40のスライダーであると仮定しましょう

  1. 今、範囲1からの正確なパーセンテージ位置で別の範囲の値から値を取得したい

値の 2 番目の範囲が 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 to B) 選択した値: c Range2(E to 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

そして、これは実際には直感的に理解できることに注意してください。パーセンテージを取り、それを 2 番目の範囲の長さにスケーリングし (これがnRange2 * nPercentOnRange1 / 100.0) が行っていることであり、それを 2 番目の範囲の下限に追加します。nPercentOnRange1基本的に、2 番目の範囲へのステップ パーセントを言っています。それがまさに式が表していることです。

于 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 に答える