【C#入門】Decimal.Compare()メソッドの使い方を徹底解説!2つのDecimal値を比較する方法
C#のDecimal.Compare()メソッドは、指定した2つのDecimal型(10進数)の値を比較し、その大小関係を判定するための静的メソッドです。金額計算など高精度な数値処理が求められる場面で、値の比較を行う際に活用できます。
基本構文
Decimal.Compare()メソッドの構文は以下の通りです。
public static int Compare(decimal val1, decimal val2);
パラメータ
- val1:比較元となる最初のDecimal値
- val2:比較先となる2つ目のDecimal値
戻り値
このメソッドはint型の値を返し、比較結果は次のように判定されます。
| 条件 | 戻り値 |
|---|---|
| val1 < val2(val1が小さい) | 0より小さい値(負の整数) |
| val1 = val2(等しい) | 0 |
| val1 > val2(val1が大きい) | 0より大きい値(正の整数) |
使用例1:異なる値を比較する
まず、異なる2つのDecimal値を比較する基本的な例を見てみましょう。
using System;
public class Demo {
public static void Main(){
Decimal val1 = 45.85m;
Decimal val2 = 35.45m;
Console.WriteLine("Decimal 1 = " + val1);
Console.WriteLine("Decimal 2 = " + val2);
Console.WriteLine("Comparison Value = " + Decimal.Compare(val1, val2));
}
}実行結果
Decimal 1 = 45.85 Decimal 2 = 35.45 Comparison Value = 1
この例では、val1(45.85)がval2(35.45)より大きいため、戻り値として1(正の整数)が返されています。
使用例2:等しい値を比較する
次に、同じ値同士を比較した場合の動作を確認してみましょう。
using System;
public class Demo {
public static void Main(){
Decimal val1 = 65.15m;
Decimal val2 = 65.15m;
Console.WriteLine("Decimal 1 = " + val1);
Console.WriteLine("Decimal 2 = " + val2);
Console.WriteLine("Comparison Value = " + Decimal.Compare(val1, val2));
}
}実行結果
Decimal 1 = 65.15 Decimal 2 = 65.15 Comparison Value = 0
両者の値が完全に一致しているため、戻り値は0となります。
実践的な活用シーン
Decimal.Compare()メソッドは、if文による条件分岐やリストのソート処理などでよく使われます。
if (Decimal.Compare(price1, price2) > 0)
{
Console.WriteLine("price1の方が高い");
}
else if (Decimal.Compare(price1, price2) < 0)
{
Console.WriteLine("price2の方が高い");
}
else
{
Console.WriteLine("同じ価格です");
}また、List<decimal>のSortメソッドやOrderByなどにも比較ロジックとして組み込めるため、金額データの並べ替えにも便利です。
まとめ
Decimal.Compare()メソッドを使えば、2つのDecimal値の大小関係を簡単に判定できます。戻り値が「負の数・0・正の数」の3パターンであることを押さえておけば、条件分岐やソート処理など、さまざまな場面で応用できるでしょう。
-
C#のDecimal.ToSByte()メソッドとは?構文と使い方をわかりやすく解説
C#のDecimal.ToSByte()メソッドは、指定されたDecimal(10進数)の値を、それと等価な8ビット符号付き整数(sbyte型)に変換するために使用される静的メソッドです。小数を含む値を整数として扱いたい場合などに活用できます。 構文 このメソッドの構文は以下の通りです。 public static sbyte ToSByte (decimal val); パラメータの「val」には、変換対象となるdecimal型の数値を指定します。戻り値としては、変換後のsbyte型(-128〜127の範囲)の値が返されます。 使用例1:基本的な使い方 まずは、Decimal.ToS
-
C#のDecimal.ToOACurrency()メソッドとは?構文と使い方をサンプルコードで解説
C#のDecimal.ToOACurrency()メソッドは、指定されたDecimal(10進数)の値を、64ビット符号付き整数に格納されるOLEオートメーション通貨(OLE Automation Currency)値へと変換するためのメソッドです。OLEオートメーション通貨は、小数点以下4桁を固定で持つ形式で表現され、元の値が10,000倍された整数として扱われます。そのため、変換結果はlong型(64ビット符号付き整数)として返されます。構文このメソッドの構文は以下の通りです。public static long ToOACurrency (decimal val);パラメータ「val」に