C#のDecimal構造体とは?Add・Ceiling・Compareメソッドの使い方を徹底解説
C#のDecimal構造体は、10進浮動小数点数を表す値型です。扱える数値の範囲は、正負ともに ±79,228,162,514,264,337,593,543,950,335(約7.9×1028)と非常に広く、金額計算のように高い精度が求められる処理に適しています。Decimal型の既定値は「0」です。
この記事では、Decimal構造体が提供する主要なメソッドのうち、「Add」「Ceiling」「Compare」の3つについて、構文と具体的なコード例を交えながら詳しく解説します。
Decimal.Add()メソッド ― 2つのDecimal値の加算
Decimal.Add()メソッドは、指定した2つのDecimal値を加算し、その結果を返す静的メソッドです。
構文
public static decimal Add (decimal val1, decimal val2);
val1 には加算対象となる最初のdecimal値、val2 には2番目のdecimal値を指定します。
コード例1
using System;
public class Demo {
public static void Main(){
Decimal val1 = 3.07m;
Decimal val2 = 4.09m;
Console.WriteLine("Decimal 1 = " + val1);
Console.WriteLine("Decimal 2 = " + val2);
Decimal res = Decimal.Add(val1, val2);
Console.WriteLine("Result (Sum) = " + res);
}
}
出力結果
Decimal 1 = 3.07 Decimal 2 = 4.09 Result (Sum) = 7.16
コード例2:MinValueとの加算
次に、Decimal.MinValue(表現できる最小値)を使った例を見てみましょう。
using System;
public class Demo {
public static void Main(){
Decimal val1 = Decimal.MinValue;
Decimal val2 = 8.21m;
Console.WriteLine("Decimal 1 = " + val1);
Console.WriteLine("Decimal 2 = " + val2);
Decimal res = Decimal.Add(val1, val2);
Console.WriteLine("Result (Sum) = " + res);
}
}
出力結果
Decimal 1 = -79228162514264337593543950335 Decimal 2 = 8.21 Result (Sum) = -79228162514264337593543950327
Decimal.Ceiling()メソッド ― 小数の切り上げ
Decimal.Ceiling()メソッドは、指定したdecimal数「以上」で最小の整数値を返します。いわゆる切り上げ処理に相当します。
構文
public static decimal Ceiling (decimal val);
val には切り上げ対象のdecimal数を指定します。
コード例1
using System;
public class Demo {
public static void Main(){
Decimal val1 = 12.85m;
Decimal val2 = 3.45m;
Console.WriteLine("Decimal 1 = " + val1);
Console.WriteLine("Decimal 2 = " + val2);
Console.WriteLine("Ceiling (val1) = " + Decimal.Ceiling(val1));
Console.WriteLine("Ceiling (val2) = " + Decimal.Ceiling(val2));
}
}
出力結果
Decimal 1 = 12.85 Decimal 2 = 3.45 Ceiling (val1) = 13 Ceiling (val2) = 4
コード例2:負の値の場合
負の値に対しても同様に機能します。「以上」という条件のため、-10.85は-10(0に近い側の整数)へと切り上げられる点に注意してください。
using System;
public class Demo {
public static void Main(){
Decimal val1 = -10.85m;
Decimal val2 = -33.45m;
Console.WriteLine("Decimal 1 = " + val1);
Console.WriteLine("Decimal 2 = " + val2);
Console.WriteLine("Ceiling (val1) = " + Decimal.Ceiling(val1));
Console.WriteLine("Ceiling (val2) = " + Decimal.Ceiling(val2));
}
}
出力結果
Decimal 1 = -10.85 Decimal 2 = -33.45 Ceiling (val1) = -10 Ceiling (val2) = -33
Decimal.Compare()メソッド ― 2つのDecimal値の比較
Decimal.Compare()メソッドは、指定した2つのDecimal値を比較し、その大小関係をint型の値として返します。
構文
public static int Compare (decimal val1, decimal val2);
戻り値の意味は次のとおりです。
- 0より小さい値:val1 が val2 より小さい場合
- 0:val1 と val2 が等しい場合
- 0より大きい値:val1 が val2 より大きい場合
コード例1
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
コード例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
まとめ
Decimal構造体は、精度の高い10進数計算を実現するための重要な型です。Add()で加算、Ceiling()で切り上げ、Compare()で大小比較を行うことができ、いずれも静的メソッドとして提供されています。金額計算など誤差が許されない場面では、double型ではなくDecimal型を使用することをおすすめします。
-
C#のUInt32構造体とは?CompareTo・Equalsメソッドの使い方を実例付きで解説
UInt32構造体は、C#における32ビット符号なし整数(unsigned integer)を表す値型です。扱える値の範囲は 0 ~ 4,294,967,295 となっており、負の値を持たない整数データを効率的に処理したい場合に活用されます。 この記事では、UInt32構造体が提供する主要なメソッドである「CompareTo()」と「Equals()」について、構文やサンプルコード、実行結果を交えながら詳しく解説していきます。 UInt32.CompareTo()メソッドとは UInt32.CompareTo()メソッドは、現在のインスタンスを指定したオブジェクトまたはUInt32の値と比較
-
C#のdecimal型(10進数型)とは?四則演算の基本をサンプルコードで解説
C#におけるdecimal型(10進数型)は、値型(value type)に分類されるデータ型で、金額計算など高い精度が求められる場面でよく使われます。decimal型には、加算(+)、減算(-)、乗算(*)、除算(/)といった算術演算子が用意されており、通常の数値型と同じように演算を行うことができます。decimal型の変数を宣言するまず、2つのdecimal型の値を宣言してみましょう。decimal型のリテラルを代入する際は、数値の末尾に M または m サフィックスを付ける必要があります。decimal d1 = 5.8M; decimal d2 = 3.2M;decimal型同士の加算