切り上げを行うには「Math.Ceiling」を使用します。
切り上げのサンプルコード
-
C#
// 切り上げ double result01 = Math.Ceiling(0.1); // 1 double result02 = Math.Ceiling(0.9); // 1 double result03 = Math.Ceiling(1.1); // 2 double result04 = Math.Ceiling(1.9); // 2
-
VB.NET
' 切り上げ Dim result01 As Double = Math.Ceiling(0.1) ' 1 Dim result02 As Double = Math.Ceiling(0.9) ' 1 Dim result03 As Double = Math.Ceiling(1.1) ' 2 Dim result04 As Double = Math.Ceiling(1.9) ' 2
マイナス値を切り上げる際の注意
Ceilingで負数の切り上げを行うと結果が「0に近づき」ます。計算対象によっては「0から遠ざかる」のが正解の場合もあり、その場合は「Floor」を使用します。 「Floor」を使用するのはマイナスの場合のみです。プラス値に対し「Floor」を使用すると切り捨てになります。 次の表はマイナス値のCeilingとFloorの結果比較です。切り上げる前の値 | Ceilingの結果 | Floorの結果 |
---|---|---|
-0.1 | 0 | -1 |
-0.9 | 0 | -1 |
-1.1 | -1 | -2 |
-1.9 | -1 | -2 |
マイナス値切り上げのサンプルコード
-
C#
// マイナス値の切り上げ(0に寄せる) double result11 = Math.Ceiling(-0.1); // 0 double result12 = Math.Ceiling(-0.9); // 0 double result13 = Math.Ceiling(-1.1); // -1 double result14 = Math.Ceiling(-1.9); // -1 // マイナス値の切り上げ(0から遠ざける) double result21 = Math.Floor(-0.1); // -1 double result22 = Math.Floor(-0.9); // -1 double result23 = Math.Floor(-1.1); // -2 double result24 = Math.Floor(-1.9); // -2
-
VB.NET
' マイナス値の切り上げ(0に寄せる) Dim result11 As Double = Math.Ceiling(-0.1) ' 0 Dim result12 As Double = Math.Ceiling(-0.9) ' 0 Dim result13 As Double = Math.Ceiling(-1.1) ' -1 Dim result14 As Double = Math.Ceiling(-1.9) ' -1 ' マイナス値の切り上げ(0から遠ざける) Dim result21 As Double = Math.Floor(-0.1) ' -1 Dim result22 As Double = Math.Floor(-0.9) ' -1 Dim result23 As Double = Math.Floor(-1.1) ' -2 Dim result24 As Double = Math.Floor(-1.9) ' -2
小数部の桁数を指定した切り上げ
「Ceiling」は桁数の指定ができないため、自分で計算する必要があります。 次のサンプルは桁数を指定した切り上げと、引数に桁数を指定できる切り上げ関数です。-
C#
少数第二位で切り上げるときは100倍、少数第三位で切り上げるときは1000倍し、「Ceiling」で切り上げた後に掛けた値で割って元の桁に戻しています。掛ける倍率は10のべき乗で求められるため、「Math.Pow」を使用しています。
// 小数部の桁数を指定した切り上げ double result31 = Math.Ceiling(0.1234 * Math.Pow(10, 1)) / Math.Pow(10, 1); // 0.2 double result32 = Math.Ceiling(0.1234 * Math.Pow(10, 2)) / Math.Pow(10, 2); // 0.13 double result33 = Math.Ceiling(0.1234 * Math.Pow(10, 3)) / Math.Pow(10, 3); // 0.124
マイナス値時に0から遠ざける切り上げ関数の例
/// <summary> /// 小数部の桁数を指定した切り上げ /// </summary> /// <param name="value">切り上げ対象の10進数</param> /// <param name="digits">戻り値の少数部の桁数</param> /// <returns>切り上げ結果</returns> static double Ceiling(double value, int digits) { double powValue = Math.Pow(10, digits); if (value >= 0) { return Math.Ceiling(value * powValue) / powValue; } else { return Math.Floor(value * powValue) / powValue; } }
-
VB.NET
C#ではべき乗の計算に「Math.Pow」を使用していますが、VB.NETでは「^」演算子でも同様の結果が得られます(VB.NETも「Math.Pow」を使えます)。
' 小数部の桁数を指定した切り上げ Dim result31 As Double = Math.Ceiling(0.1234 * (10 ^ 1)) / (10 ^ 1) ' 0.2 Dim result32 As Double = Math.Ceiling(0.1234 * (10 ^ 2)) / (10 ^ 2) ' 0.13 Dim result33 As Double = Math.Ceiling(0.1234 * (10 ^ 3)) / (10 ^ 3) ' 0.124
マイナス値時に0から遠ざける切り上げ関数の例
''' <summary> ''' 小数部の桁数を指定した切り上げ ''' </summary> ''' <param name="value">切り上げ対象の10進数</param> ''' <param name="digits">戻り値の少数部の桁数</param> ''' <returns>切り上げ結果</returns> Function Ceiling(value As Double, digits As Integer) As Double Dim powValue As Double = (10 ^ digits) If (value >= 0) Then Return Math.Ceiling(value * powValue) / powValue Else Return Math.Floor(value * powValue) / powValue End If End Function
サンプルコードのダウンロード
サンプルコードの実行には Microsoft Visual Studio 2015 以上のバージョンが必要です。 2015以外のバージョンではプロジェクトを開いた際にファイルの変換が必要な場合があります。その場合は変換後に実行してください。検証環境
- Microsoft Visual Studio Professional 2015 Version 14.0.25431.01 Update 3
- Microsoft .NET Framework Version 4.6.01055
- Microsoft Windows 7 Professional Service Pack 1 (Microsoft Windows NT 6.1 (7601))