C#
 Computer >> コンピューター >  >> プログラミング >> C#

【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パターンであることを押さえておけば、条件分岐やソート処理など、さまざまな場面で応用できるでしょう。

  1. C#のDecimal.ToSByte()メソッドとは?構文と使い方をわかりやすく解説

    C#のDecimal.ToSByte()メソッドは、指定されたDecimal(10進数)の値を、それと等価な8ビット符号付き整数(sbyte型)に変換するために使用される静的メソッドです。小数を含む値を整数として扱いたい場合などに活用できます。 構文 このメソッドの構文は以下の通りです。 public static sbyte ToSByte (decimal val); パラメータの「val」には、変換対象となるdecimal型の数値を指定します。戻り値としては、変換後のsbyte型(-128〜127の範囲)の値が返されます。 使用例1:基本的な使い方 まずは、Decimal.ToS

  2. 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」に