2 つの整数の範囲に含まれる値を、別の範囲に含まれる別の整数に変換しようとしています。出力値を入力整数の対応する値にしたい(比率を考慮して)。より明確にするために、解決したい問題の例を次に示します。
- 範囲 (10, 28) に含まれる 3 つの整数、たとえば 10、28、13 があるとします。10 は可能な最小値、28 は可能な最大値です。
- 出力として、範囲(5、20)の「対応する」数値に変換された整数が必要です。この正確な例では、10 は 5 に、28 は 20 に、13 は 5 から 20 の間の値に変換され、比率を維持するために再スケーリングされます。その後、この値は整数に変換されます。
python でそのような「再スケーリング」を実現するにはどうすればよいですか? 通常の計算を試みました(value/max of first range)*max of second range
が、まれな場合を除いて間違った値が返されます。
最初はPythonでの除算に問題がありましたint
が、これを修正した後でも値が間違っています。たとえば、例に示されている値を使用するint((float(10)/28)*20)
と、結果として 7 が得られます。最初の範囲で可能な最小値であるため、5 を返す必要があります。
(論理と数学の観点から)少し明白なように感じますが、何かが欠けています。