C#のDecimal.Round()メソッドとは?構文と使い方を実例付きで解説
C#のDecimal.Round()メソッドは、decimal型の値を最も近い整数、または指定した小数点以下の桁数に丸めるための静的メソッドです。金額計算など高い精度が求められる処理でよく利用されます。
Decimal.Round()メソッドの構文
Decimal.Round()メソッドには、用途に応じて以下の4つのオーバーロードが用意されています。
public static decimal Round (decimal d); public static decimal Round (decimal d, int decimals); public static decimal Round (decimal d, MidpointRounding mode); public static decimal Round (decimal d, int decimals, MidpointRounding mode);
- d:丸め対象となるdecimal型の値
- decimals:返される値の小数点以下の桁数(0〜28で指定)
- mode:中間値(ちょうど半分の値)をどう扱うかを決めるMidpointRounding列挙体
使用例①:整数への丸め
まずは、小数点以下を丸めて整数値を取得する基本的な例を見てみましょう。
using System;
public class Demo {
public static void Main(){
Decimal val1 = 9.00m;
Decimal val2 = 15.29m;
Decimal val3 = 394949845.14245M;
Console.WriteLine("Decimal 1 = "+val1);
Console.WriteLine("Decimal 2 = "+val2);
Console.WriteLine("Remainder = "+(Decimal.Remainder(val1,val2)));
Console.WriteLine("Value 1 (Rounded) = "+(Decimal.Round(val1)));
Console.WriteLine("Value 2 (Rounded) = "+(Decimal.Round(val2)));
Console.WriteLine("Value 3 (Rounded) = "+(Decimal.Round(val3)));
}
}
実行結果
Decimal 1 = 9.00 Decimal 2 = 15.29 Remainder = 9.00 Value 1 (Rounded) = 9 Value 2 (Rounded) = 15 Value 3 (Rounded) = 394949845
このように、引数を1つだけ渡して呼び出すと、各値は最も近い整数に丸められます。「15.29」は「15」、「394949845.14245」は「394949845」となりました。
使用例②:小数点以下の桁数を指定して丸める
次に、第2引数で丸めた後の小数点以下の桁数を指定する例を紹介します。
using System;
public class Demo {
public static void Main(){
Decimal val1 = 6.59m;
Decimal val2 = 30.12m;
Decimal val3 = 6946649845.25245M;
Console.WriteLine("Decimal 1 = "+val1);
Console.WriteLine("Decimal 2 = "+val2);
Console.WriteLine("Remainder = "+(Decimal.Remainder(val1,val2)));
Console.WriteLine("Value 1 (Rounded) = "+(Decimal.Round(val1,1)));
Console.WriteLine("Value 2 (Rounded) = "+(Decimal.Round(val2,1)));
Console.WriteLine("Value 3 (Rounded) = "+(Decimal.Round(val3,2)));
}
}
実行結果
Decimal 1 = 6.59 Decimal 2 = 30.12 Remainder = 6.59 Value 1 (Rounded) = 6.6 Value 2 (Rounded) = 30.1 Value 3 (Rounded) = 6946649845.25
「6.59」は小数第1位で丸められて「6.6」、「6946649845.25245」は小数第2位で丸められて「6946649845.25」となっています。このように桁数を指定することで、必要な精度に合わせた丸め処理が可能です。
補足:MidpointRoundingによる丸め方法の指定
Decimal.Round()メソッドでは、中間値(例:「2.5」のようなちょうど半分の値)の扱いをMidpointRounding列挙体で制御できます。
- MidpointRounding.ToEven:最も近い偶数に丸める(銀行家の丸め)。引数を省略した場合の既定動作です。
- MidpointRounding.AwayFromZero:ゼロから遠い方向へ丸める(一般的な四捨五入)。
例えば、Decimal.Round(2.5m)は中間値が最も近い偶数「2」に丸められますが、Decimal.Round(2.5m, MidpointRounding.AwayFromZero)と指定すれば「3」が返されます。金額計算などで一般的な四捨五入が必要な場合は、明示的にAwayFromZeroを指定するとよいでしょう。
また、decimalsに0〜28以外の値を指定した場合や、丸め結果がdecimal型の範囲を超える場合はArgumentOutOfRangeExceptionがスローされる点にも注意してください。
-
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」に
-
C#のDecimal.Floor()メソッドの使い方を徹底解説
概要C#のDecimal.Floor()メソッドは、指定されたDecimal型の数値を「負の無限大方向」に向かって最も近い整数へ丸める静的メソッドです。正の数であれば小数点以下がそのまま切り捨てられますが、負の数の場合はより小さい整数側へ丸められる点に注意が必要です。構文構文は以下のとおりです。public static decimal Floor (decimal val);引数valには、丸めの対象となるDecimal型の値を指定します。使用例1:正の数の場合まず、正のDecimal値に対してDecimal.Floor()メソッドを使用する例を見てみましょう。using System; p