C# 四捨五入、切り上げ、切り捨て

using System;

class Test1
{
    static void Main()
    {
        Console.WriteLine("---start---");
        //DoRoundTest1();
        //DoCeilingTest1();
        //DoTruncTest1();
        DoFloorTest1();
        Console.WriteLine("---end---");
    }

    // 四捨五入テスト
    static void DoRoundTest1() {
        double e = 2.7182;

        // 小数点第1位を四捨五入して、整数値で表示する。-> 3
        Console.WriteLine(e.ToString("F0"));

        // 小数点第2位を四捨五入して、第1まで表示する。-> 2.7
        Console.WriteLine(e.ToString("F1"));

        // 小数点第3位を四捨五入して、第2位まで表示する。-> 2.72
        Console.WriteLine(e.ToString("F2"));

        // 小数点第4位を四捨五入して、第3位まで表示する。-> 2.718
        Console.WriteLine(e.ToString("F3"));

        // 小数点第1位を四捨五入して、整数値で表示する。-> 3
        Console.WriteLine(Math.Round(e, MidpointRounding.AwayFromZero));

        // 小数点第2位を四捨五入して、第1まで表示する。-> 2.7
        Console.WriteLine(Math.Round(e, 1, MidpointRounding.AwayFromZero));

        // 小数点第3位を四捨五入して、第2まで表示する。-> 2.72
        Console.WriteLine(Math.Round(e, 2, MidpointRounding.AwayFromZero));

        // 小数点第4位を四捨五入して、第3まで表示する。-> 2.718
        Console.WriteLine(Math.Round(e, 3, MidpointRounding.AwayFromZero));
    }

    // 切上げテスト
    static void DoCeilingTest1() {
        double e = 2.7182;

        // 少数点第1位を切上げして、整数値で表示する -> 3
        Console.WriteLine(Math.Ceiling(e));

        // 少数点第2位を切上げして、第1まで表示する。 -> 2.8
        Console.WriteLine(Math.Ceiling((e * 10)) / 10);

        // 少数点第3位を切上げして、第2まで表示する。 -> 2.72
        Console.WriteLine(Math.Ceiling((e * 100)) / 100);

        // 少数点第4位を切上げして、第3まで表示する。 -> 2.719
        Console.WriteLine(Math.Ceiling((e * 1000)) / 1000);
    }

    // 切捨てテスト
    // 負数は0に近づける
    static void DoTruncTest1() {
        double e = 2.7182;

        // 少数点第1位を切捨てして、整数値で表示する -> 2
        Console.WriteLine(Math.Truncate(e));

        // 少数点第2位を切捨てして、第1まで表示する。 -> 2.7
        Console.WriteLine(Math.Truncate((e * 10)) / 10);

        // 少数点第3位を切捨てして、第2まで表示する。 -> 2.71
        Console.WriteLine(Math.Truncate((e * 100)) / 100);

        // 少数点第4位を切捨てして、第3まで表示する。 -> 2.71
        Console.WriteLine(Math.Truncate((e * 1000)) / 1000);

        e *= -1;

        // 少数点第2位を切捨てして、第1まで表示する。 -> -2.7
        Console.WriteLine(Math.Truncate((e * 10)) / 10);

        // 少数点第3位を切捨てして、第2まで表示する。 -> -2.71
        Console.WriteLine(Math.Truncate((e * 100)) / 100);

        // 少数点第4位を切捨てして、第3まで表示する。 -> -2.71
        Console.WriteLine(Math.Truncate((e * 1000)) / 1000);
    }

    // 切捨てテスト
    // 負数は0から遠ざける
    static void DoFloorTest1() {
        double e = 2.7182;

        // 少数点第1位を切捨てして、整数値で表示する -> 2
        Console.WriteLine(Math.Floor(e));

        // 少数点第2位を切捨てして、第1まで表示する。 -> 2.7
        Console.WriteLine(Math.Floor((e * 10)) / 10);

        // 少数点第3位を切捨てして、第2まで表示する。 -> 2.71
        Console.WriteLine(Math.Floor((e * 100)) / 100);

        // 少数点第4位を切捨てして、第3まで表示する。 -> 2.71
        Console.WriteLine(Math.Floor((e * 1000)) / 1000);

        e *= -1;

        // 少数点第2位を切捨てして、第1まで表示する。 -> 2.8
        Console.WriteLine(Math.Floor((e * 10)) / 10);

        // 少数点第3位を切捨てして、第2まで表示する。 -> 2.72
        Console.WriteLine(Math.Floor((e * 100)) / 100);

        // 少数点第4位を切捨てして、第3まで表示する。 -> 2.719
        Console.WriteLine(Math.Floor((e * 1000)) / 1000);

    }
}

 

投稿日: