小数を整数化する

2024年8月14日

C#で小数を整数に変換する方法はいくつかあります。代表的な方法としては、Math.FloorMath.CeilingMath.Round、キャストを使用する方法があります。それぞれの方法をサンプルコードとして示します。

using System;

class Program
{
    static void Main()
    {
        double decimalNumber = 12.5;

        // 1. Math.Floor: 小数点以下を切り捨てる
        int floorResult = (int)Math.Floor(decimalNumber);
        Console.WriteLine("Math.Floor: " + floorResult); // 出力: 12

        // 2. Math.Ceiling: 小数点以下を切り上げる
        int ceilingResult = (int)Math.Ceiling(decimalNumber);
        Console.WriteLine("Math.Ceiling: " + ceilingResult); // 出力: 13

        // 3-1. Math.Round (デフォルトのMidpointRounding.ToEven): 最近接偶数に丸める
        int roundResult1 = (int)Math.Round(decimalNumber);
        Console.WriteLine("Math.Round1: " + roundResult1); // 出力: 12

        // 3-2. Math.Round (MidpointRounding.AwayFromZero): 0.5を切り上げる
        int roundResult2 = (int)Math.Round(decimalNumber, MidpointRounding.AwayFromZero);
        Console.WriteLine("Math.Round2: " + roundResult2); // 出力: 13

        // 4. キャスト: 小数点以下を単純に切り捨てる
        int castResult = (int)decimalNumber;
        Console.WriteLine("キャスト: " + castResult); // 出力: 12
    }
}

このコードを実行すると、次のような出力が得られます:

それぞれのメソッドの説明は以下の通りです:

Math.Floor: 12
Math.Ceiling: 13
Math.Round1: 12
Math.Round2: 13
キャスト: 12

  • Math.Floor12.5を切り捨てて12になります。
  • Math.Ceiling12.5を切り上げて13になります。
  • Math.Round1 (デフォルト)12.5は「最近接偶数への丸め(Banker’s Rounding)」によって、12になります(12が偶数なので)。
  • Math.Round2 (MidpointRounding.AwayFromZero)12.5は四捨五入され、13になります。
  • キャスト12.5は単純に小数部分が切り捨てられ、12になります。

C#

Posted by hidepon