Unit 型
パーセンテージや絶対値などの値に対する算術演算を簡略化するために、Unit データ型を使用できます。これにより、加算、減算、乗算、除算を透過的に行えます。Unit は Decimal に変換でき(値がパーセンテージの場合、つまり Unit.Type 型が UnitTypes.Percent に設定されている場合を除く)、またその逆にも変換できます(この場合、常に絶対値の値が作成されます。つまり Unit.Type 型は UnitTypes.Absolute に設定されます)。
Unit の使用
特殊なコンストラクターを使用して Unit を作成できます。または UnitHelper を利用した短い表記を使用できます。
// 絶対値を作成 var absolute = new Unit(30); // パーセンテージ値を作成 var percent = 30.0.Percents();Unit には書式付き出力があります。したがって、UnitTypes 型に応じて値を文字列に変換すると、次のようになります。
Console.WriteLine("absolute = " + absolute); Console.WriteLine("percent = " + percent);次の行が出力されます。
absolute = 30 percent = 30%Unit に対する算術演算は、通常の数値と同じ方法で実行されます。
// 値の加算 Console.WriteLine("absolute + percent = " + (absolute + percent)); // 値の乗算 Console.WriteLine("absolute * percent = " + (absolute * percent)); // 値の減算 Console.WriteLine("absolute - percent = " + (absolute - percent)); // 値の除算 Console.WriteLine("absolute / percent = " + (absolute / percent));Unit に対する算術演算の結果は、それ自体も Unit になり、その型は最初のオペランドの型と等しくなります。たとえば、絶対値とパーセンテージを加算した場合、結果は絶対値になります。
// 絶対値とパーセンテージの加算 var resultAbsolutePercents = absolute + percent; // 絶対値から decimal への変換 var resultAbsolutePercentsDecimal = (decimal)resultAbsolutePercents; Console.WriteLine("absolute + percent = " + resultAbsolutePercents); Console.WriteLine("(decimal)(absolute + percent) = " + resultAbsolutePercentsDecimal);このような演算の出力は次のようになります。
absolute + percent = 39 (decimal)(absolute + percent) = 39値を比較するには、よく使われる比較演算子も使用できます。
if (absolute > percent) Console.WriteLine("絶対値はパーセンテージより大きい"); if (absolute == percent) Console.WriteLine("値は等しい");値を正にするには、
Abs()メソッドを使用できます。var negative = new Unit(-10); var positive = negative.Abs(); // 10値に特定の係数を掛けるには、
Times()メソッドを使用できます。var multiplied = absolute.Times(5); // 150
制限事項
- UnitTypes.Percent 型の値は他の型に変換できません
- UnitTypes.Limit 型の値は算術演算で使用できません
- 異なる型の値同士の比較は、常に可能とは限りません
Unit 型は、取引アプリケーションでさまざまな種類の値を扱うための一貫した方法を提供し、価格や数量に関連する計算を表現しやすくします。