4

ユーザーがいつでも測定単位を変更できる機能をプログラムに追加し、プログラムに入力と出力を再計算させます。

ユーザーが項目に 20 ポンドと入力した後、代わりにキログラムで作業することを決定した場合、ユーザーはいつでもそうするオプションを選択でき、プログラムは 20 ポンドの入力を 9Kg に再計算します。次に、彼がオンスで作業することを決定した場合、その 9Kg を 320 オンスに変換します。

これを行うための最も効果的かつ効率的な方法は何でしょうか? 私は、正しい式を実装する方法を見つけようとして頭を悩ませてきました。

4

4 に答える 4

15

すべての計算は標準単位 (または使用したい単位) で行います。

  • ユーザーの入力を希望するものから標準単位に変換します。
  • 標準単位を使用して計算を実行します。
  • 答えをユーザーが望む単位に変換します。

単位変換を考慮する必要があるのは、ユーザー インターフェイスだけです。コードの残りの部分では、これを気にする必要はありません。

于 2010-05-07T21:13:49.857 に答える
5

値を既知の測定単位で内部的に保存し (たとえば、すべてを kg で保存)、既知の単位から他のすべての単位に変換する式を用意します。

基本的に、表示用に単位を変換するだけで済みます。すべての内部計算は 1 つの単位で行うことができます。

変化球として、F# には堅牢な UoM メカニズムが組み込まれています...

于 2010-05-07T21:16:58.487 に答える
0

私が取り組んだプログラムでは、Units.Torque や Units.Length など、"Units" 名前空間の下に個別のクラスがありました。

Units.Weight のようなクラスを作成し、すべての変換係数を const 値として、可能な単位を列挙型として持つ場合、そのクラスを呼び出して目的の単位に変換するだけです。これは、私たちが使用するシステムの非常に基本的な例です。

namespace Units
{
    class Weight
    {
        public enum WeightType
        {
            kg,
            lb
        }

        const double kgTolbs = 2.20462262;

        public static double Convert(double value, WeightType fromUnits, WeightType toUnits)
        {
            //Code here to convert units
        }
    }
}

この構造を使用すると、任意のユニット タイプに自由に変換できます。

于 2010-05-07T21:23:50.883 に答える