프로그래밍 노트

C# 올림, 반올림, 버림 함수/지정 소수점 자리 이하 올림, 반올림, 버림 함수 만들기 본문

C#/기초

C# 올림, 반올림, 버림 함수/지정 소수점 자리 이하 올림, 반올림, 버림 함수 만들기

떡잎 2020. 3. 3. 19:50

C#에서 올림, 반올림, 버림 함수 사용하는 법

아래 소스를 한번 돌려보면 쉽게 이해 갈 수 있을 것 같음

 

지정 소수점 자리 이하로 올림, 반올림, 버림하는 함수를 밑에 만들어 두었음

using System; 

namespace mathTest
{
    class Program
    {
        static void Main(string[] args)
        {
            double dValue1 = 123.456;
            double dValue2 = 987.654;
            double dValue3 = 192.837465;
            double dTest = 0;

            dTest = Math.Ceiling(dValue1);
            Console.WriteLine(dValue1 + "   올림 -> " + dTest);
            dTest = Math.Round(dValue1);
            Console.WriteLine(dValue1 + " 반올림 -> " + dTest);
            dTest = Math.Truncate(dValue1);
            Console.WriteLine(dValue1 + "   버림 -> " + dTest);

            Console.WriteLine();

            dTest = Math.Ceiling(dValue2);
            Console.WriteLine(dValue2 + "   올림 -> " + dTest);
            dTest = Math.Round(dValue2);
            Console.WriteLine(dValue2 + " 반올림 -> " + dTest);
            dTest = Math.Truncate(dValue2);
            Console.WriteLine(dValue2 + "   버림 -> " + dTest);

            Console.WriteLine();

            for (int i = 1; i <= 5; i++)
            {
                dTest = CustomRound(RoundType.Ceiling, dValue3, i);
                Console.WriteLine(dValue3 + " 소수점 " + i + "자리   올림 -> " + dTest);
                dTest = CustomRound(RoundType.Round, dValue3, i);
                Console.WriteLine(dValue3 + " 소수점 " + i + "자리 반올림 -> " + dTest);
                dTest = CustomRound(RoundType.Truncate, dValue3, i);
                Console.WriteLine(dValue3 + " 소수점 " + i + "자리   버림 -> " + dTest);
            }

            Console.ReadLine();
        }

        private enum RoundType
        {
            Ceiling,
            Round,
            Truncate
        }

        static private double CustomRound(RoundType roundType, double value, int digit = 1)
        {
            double dReturn = 0;

            // 지정 자릿수의 올림,반올림, 버림을 계산하기 위한 중간 계산
            double digitCal = Math.Pow(10, digit) / 10;  

            switch (roundType)
            {
                case RoundType.Ceiling:
                    dReturn = Math.Ceiling(value * digitCal) / digitCal;
                    break;
                case RoundType.Round:
                    dReturn = Math.Round(value * digitCal) / digitCal;
                    break;
                case RoundType.Truncate:
                    dReturn = Math.Truncate(value * digitCal) / digitCal;
                    break;
            }
            return dReturn;
        }
    }
}

 

Comments