C# 切り捨てのサンプル(Floor/Truncate)

C#のFloorメソッドとTruncateメソッドで、切り捨てを行うサンプルです。

目次

説明 Floorメソッド
サンプル 小数第一位で切り捨てる(Floor)
  小数第一位以外の小数の桁で切り捨てする
  整数の桁で切り捨てる
  FloorメソッドとTruncateメソッドの違い

Floorメソッド

public static double Floor(double a)

小数第一位で切り捨てる(Floor)

小数第一位で切り捨てるサンプルです。

using System;
class Test1
{
    static void Main()
    {
        // 小数第一位で切り捨て
        double a = 2.26;
        Console.WriteLine(Math.Floor(a)); // 2

        // 小数第一位で切り捨て
        double b = 2.82;
        Console.WriteLine(Math.Floor(b)); // 2

        // マイナス値の場合
        double c = -2.82;
        Console.WriteLine(Math.Floor(c)); // -3
    }
}

Floorメソッドで小数第一位を切り捨てています。
16行目は、マイナスの値の場合です。 

小数第一位以外の小数の桁で切り捨てする

小数第一位以外の小数の桁で切り捨てするサンプルです。

using System;
class Test1
{
    static void Main()
    {
        double a = 12.262;

        // 小数第二位で切り捨て
        Console.WriteLine((Math.Floor(a * 10)) / 10); // 12.2

        // 小数第三位で切り捨て
        Console.WriteLine((Math.Floor(a * 100)) / 100); // 12.26
    }
}

6行目は、数値を変数に代入しています。
9行目は、小数第二位で切り捨てています。以下の操作です。
1.対象の値に10を掛けます。(12.262 * 10 = 122.62)
2.Floorメソッドを使用して小数点以下で切り捨てます。(122.62 → 122)
3.対象の値を再度10で割ります。(122 / 10 = 12.2)

整数の桁で切り捨てる

整数の桁で切り捨てるサンプルです。

using System;
class Test1
{
    static void Main()
    {
        double a = 122.2;

        // 1の位で切り捨て
        Console.WriteLine((Math.Floor(a / 10)) * 10); // 120

        // 10の位で切り捨て
        Console.WriteLine((Math.Floor(a / 100)) * 100); // 100
    }
}

6行目は、数値を変数に代入しています。
9行目は、1の位で切り捨てています。以下の操作です。
1.対象の値を10で割ります。(122.2 / 10 = 12.22)
2.floorメソッドを使用して小数点以下で切り捨てます。(12.22 → 12)
3.対象の値を再度10で掛けます。(12 * 10 = 120)

FloorメソッドとTruncateメソッドの違い

FloorメソッドとTruncateメソッドの違いです。

using System;
class Test1
{
    static void Main()
    {
        // 小数第一位で切り捨て
        double a = 2.26;
        Console.WriteLine(Math.Floor(a)); // 2
        Console.WriteLine(Math.Truncate(a)); // 2

        // 小数第一位で切り捨て
        double b = 2.82;
        Console.WriteLine(Math.Floor(b)); // 2
        Console.WriteLine(Math.Truncate(b)); // 2

        // マイナス値の場合
        double c = -2.82;
        Console.WriteLine(Math.Floor(c)); // -3
        Console.WriteLine(Math.Truncate(c)); // -2
    }
}

Truncateメソッドは、Floorメソッドと同じく小数第一位で切り捨てます。
違いは、17行目のマイナスの値の場合です。

Floorメソッドは、負の無限大方向になります。
Truncateメソッドは、小数部の桁を破棄します。

以下はMicrosoftのMathクラスTruncateメソッドのリンクです。
https://docs.microsoft.com/ja-jp/dotnet/api/system.math.truncate?view=netframework-4.8#System_Math_Truncate_System_Double_

関連の記事

C# 四捨五入のサンプル(Round)
C# 切り上げのサンプル(Ceiling)

△上に戻る