値の切り上げ・切り捨て

自分用のメモも兼ねて。

using System;

namespace RoundSample
{
    class Program
    {
        double data = 12345.6789;
        Console.WriteLine("元のデータ:{0}", data);
        Console.WriteLine("小数切り捨て:{0}", Math.Floor(data));
        Console.WriteLine("小数切り上げ:{0}", Math.Ceiling(data));
        Console.WriteLine("小数第2位以下切り捨て:{0}", RoundDown(data, 2));
        Console.WriteLine("小数第2位以下切り上げ:{0}", RoundUp(data, 2));
    }

    // 指定した桁数で切り上げます
    public static double RoundUp(double value, int digit)
    {
        double temp = Math.Pow(10, digit);
        if (0 <= value)
        {
            return Math.Ceiling(value * temp) / temp;
        }
        else
        {
            return Math.Floor(value * temp) / temp;
        }
    }

    // 指定した桁数で切り捨てます
    public static double RoundDown(double value, int digit)
    {
        double temp = Math.Pow(10, digit);
        if (0 <= value)
        {
            return Math.Floor(value * temp) / temp;
        }
        else
        {
            return Math.Ceiling(value * temp) / temp;
        }
    }
}
元のデータ:12345.6789
小数切り捨て:12345
小数切り上げ:12346
小数第2位以下切り捨て:12345.67
小数第2位以下切り上げ:12345.68

上記のようなメソッドが、Math クラスにあればなぁ。