私は0とmの間のnの値を含むデータセットを持っています。簡単な数学の問題
ここでは、この値をminとmaxの間の範囲でマップしたいと考えています。しかし、どうすればいいのですか?すべてのオブジェクトにこのメソッドがある場合:
public double getValue(int min, int max) {
// return value between min and max;
}
これは私が思っている仕事ですか?
私は0とmの間のnの値を含むデータセットを持っています。簡単な数学の問題
ここでは、この値をminとmaxの間の範囲でマップしたいと考えています。しかし、どうすればいいのですか?すべてのオブジェクトにこのメソッドがある場合:
public double getValue(int min, int max) {
// return value between min and max;
}
これは私が思っている仕事ですか?
試してみてください。
任意の整数/浮動小数点のために、もちろん可能newval = val * (max - min)/m + min
:あなたはmin..max
の範囲0..m
をマッピングする話をしている場合は
return min + (max - min) * (val/m);
、確かにそれはただの問題です不注意による丸めのような悪夢。
(max - min)/m
を乗算すると、正しい範囲にスケールされ、min
を加算すると正しい下限オフセットが得られます。
このコードは、もう少し汎用的である(唯一の0-mの範囲が、任意の元の範囲を取ることはありません):
public double GetValue(int value,
int min,
int max,
int originalMin,
int originalMax)
{
return min + (double)(value - originalMin) * (max - min)/(originalMax - originalMin);
}
// in your case originalMin = 0, and originalMax = m
'value'を' originalMin'で減算するのを忘れました。 – digEmAll
これは – RoflcoptrException
探しのものイムのようです私はこれを考えていません働くm = 10、val = 5を差し込みます。 –
>>> min、max、m = 5,10,100 >>> 6 *(max - min)+ min 35 - これは 'min'と' max'の間でスケーリングされません。 – marcog