.NET프로그래밍/C# 3.5 SP1

수학관련함수예제 - ROUND(반올림)함수

holland14 2009. 8. 7. 12:01

using System;

public class 반올림
{
    public static void Main()
    {
        double d = 1234.5678;
        Console.WriteLine( Math.Round(d, 2) ); // 1234.57
        Console.WriteLine( MyRound(d, 3) ); // 1234.568
        //double temp = (int)((d + 0.05) * 10) / 10.0; // xxx.x
        double temp = (int)((d + 0.005) * 100) / 100.0; // xxx.xx
        Console.WriteLine("{0}", temp );
    }

    /// <summary>
    /// 내가 만든 반올림 함수
    /// </summary>
    /// <param name="num">실수형</param>
    /// <param name="pos">자릿수 : 반올림되어질 자리</param>
    /// <returns>반올림된 수</returns>
    public static double MyRound(double num, int pos)
    {
        //[1]
        double result = 0.0;
        double half = 0.5;
        double factor = 1;
        //[2]
        for (int i = 0; i < pos; i++)
        {
            half *= 0.1;
            factor *= 10;
        }
        result = (int)((num + half) * factor) / (double)factor;
        //[3]
        return result;
    }

}