none
.csv 파일을 만드려고 하는데 숫자가 이상하게 잘리네요. RRS feed

  • 질문

  • 안녕하세요.

    console에서 .csv 파일을 만드는 프로그램을 작성 중에 막히는 부분이 있어 질문드립니다.

    using System;
    using System.IO;
    
    namespace ConsoleApp3
    {
        static class Program
        {
            static void Main(string[] args)
            {
                //variables
                double VehiclePrice=0.0;
                double DownPayment=0.0;
                double APR=0.0;
                int Terms=0;
    
                double Payment = 0.0;
                double Principal;
                double Interest;
                double Balance = 0.0;
    
                Console.WriteLine("Vehicle Price:");
                VehiclePrice = Convert.ToInt32(Console.ReadLine());
                Console.WriteLine("DownPayment:");
                DownPayment = Convert.ToInt32(Console.ReadLine());
                Console.WriteLine("APR:");
                APR = Convert.ToDouble(Console.ReadLine());
                Console.WriteLine("Terms:");
                Terms = Convert.ToInt32(Console.ReadLine());
                Payment = getPayment(VehiclePrice, DownPayment, APR, Terms);
    
    
                Console.WriteLine("You should pay {0:N2} monthly for your loan", Payment);
    
                //print amortization table on screen
    
                Console.WriteLine("You should pay {0:N2} monthly for your loan", Payment);
    
                Console.WriteLine("Amortization Schedule");
                Console.WriteLine("----------------------------");
                Console.WriteLine(" Period       Payment           Principal          Interest           Balance");
                Console.WriteLine("====================================================================================");
    
                using(StreamWriter file=new StreamWriter("@AutoLoan.csv"))
                {
                    file.WriteLine("Period,Payment,Principal,Interest,Balance");
                    file.WriteLine("--------,----------,-----------,----------,---------");
    
                    for (int i = 0; i < Terms * 12; i++)
                    {
                        if (i == 0)
                        {
                            Balance = VehiclePrice - DownPayment;
                        }
                        Interest = Balance * (APR / 12);
                        Principal = Payment - Interest;
                        Balance -= Principal;
                        if (Balance < 0)
                            Balance = 0.0;
                        Console.WriteLine("{0}        {1:N2}         {2:N2}         {3:N2}        {4:N2}", i, Payment, Principal, Interest, Balance);
                        file.WriteLine("{0},{1:N2},{2:N2},{3:N2},{4:N2}",i+1,Payment,Principal,Interest,Balance);
                    }
                }
                Console.WriteLine("file created successfully.");
            }
    
            static double getPayment(double p, double d, double r, int t)
            {
                double result = (p - d) * (r / 12) * (Math.Pow(1 + r / 12, t * 12) / (Math.Pow(1 + r / 12, t * 12) - 1));
                return result;
            }
    
        }
    }

    위와 같이 코드를 작성해서 실행하면 아래와 같은 이상한 모양으로 나옵니다.

    Period Payment Principal Interest Balance
    -------- ---------- ----------- ---------- ---------
    1 4 115.17 3 420.67 694.5 176 579.33


    update> file에 write하는 code에서 소숫점 2자리만 찍도록 하는 것을 없애니 제대로 나오는군요. 

    어디가 틀렸는지 지적 좀 부탁드립니다.

    감사합니다.



    • 편집됨 ohseihyung 2020년 11월 2일 월요일 오전 10:08
    2020년 11월 2일 월요일 오전 9:47

모든 응답

  • 포럼을 이용해 주셔서 감사합니다.
    이슈를 확인하기 위해 콘솔에 입력 한 내용을 공유해 주시기 바랍니다.
    숫자가 다르면 결과가 달라질 수 있기 때문입니다.
    그리고 숫자가 이상하게 잘린다는 것이 무슨 뜻인가요?좀 더 자세히 설명해 주시기 바랍니다.

    MSDN Community Support Ricky

    다른 커뮤니티 멤버에게 도움이 될 수 있게 문제를 해결 한 답변을 '답변으로 표시'를 클릭하시고 그렇지 않은 경우 '답변으로 표시 취소'를 클릭하시기 바랍니다. MSDN 서포트에 대한 의견이나 불만이 있을 경우 MSDNFSF@microsoft.com 으로 연락하시기 바랍니다.

    2020년 11월 3일 화요일 오전 9:50
    중재자