본문 바로가기
반응형

C#52

[C#] 부동 소수점 오차(플로팅 연산 오류) - 발생원인 모든 십진수들이 floatin point number형태로 저장될 수 없기 때문이다. '정수 + 소수'방식이 아니라 '지수 * 가수'방식으로 숫자를 2진법으로 변환한뒤 정수부분이 1의 자리+소수점으로 남을때까지 2로 나누고 나눈만큼 지수로 곱해주어 계산한다. 우리가 소숫점을 찍고 디버깅을 했을 때, 0.3, 12.4 등 정확하게 나오는 이유는 c#에서 ToString을 할때 round off error무시한 반올림 숫자가 반환되기 때문이다. - 해결방법 1. float의 int 캐스팅은 되도록 피하도록 하자. 2. double로 소수점의 정밀도를 높이거나 Epsilon을 사용하도록 하자 3. 비교 연산을 할 때는 등호를 사용하지 말것 4. 곱하기를 하여 (최대한)정수로 만들고 후에 다시 나누.. 2023. 12. 12.
[C#] 객체지향 프로그래밍 이해하기 1. 객체지향 프로그래밍의 이해 1.1. 객체지향 프로그래밍의 정의 객체지향 프로그래밍(Object-Oriented Programming, OOP)은 컴퓨터 프로그래밍의 패러다임 중 하나로, 프로그램을 객체들의 모임으로 보고 이들 간의 상호작용으로서 표현하는 방법론입니다. 이는 프로그램의 구조를 더욱 명확하게 이해하고, 유지보수와 재사용성을 높이는 데에 중요한 역할을 합니다. 1.2. 객체지향 프로그래밍의 특징 객체지향 프로그래밍은 크게 캡슐화, 상속, 다형성의 세 가지 주요 특징을 가지고 있습니다. 캡슐화는 데이터와 함수를 하나의 단위로 묶는 것을 의미하며, 상속은 기존의 클래스를 확장하여 새로운 클래스를 생성하는 것을 의미합니다. 다형성은 하나의 인터페이스나 클래스가 다양한 형태로 동작할 수 있게 하.. 2023. 10. 12.
[C#] 가변인자 매개변수 params params 란? 함수에서 매개변수를 넘길때 1,2,3개 이렇게 개수를 지정해 주었던 것과 달리, params 키워드를 사용하면 개수에 제한 없이 매개변수를 넘길 수 있다. 가변 인자 매개변수 = 개수가 변하는 인자들을 넘길 수 있는 매개변수 params 규칙 선언 부에서 params 키워드는 타입 맨 앞에 와야한다. 가변인자 매개변수를 선언할 때는 []를 이용하여 1차원 배열로 선언해야 한다. 데이터 타입이 애매할 때는 모든 클래스의 상위 클래스인 object 클래스 배열을 사용할 수 있다. 호출부에서 각 매개변수는 쉼표로 구분해야한다. 호출부에서 매개변수를 보내지 않아도 된다. 이경우 길이는 0이되고 비어있는 매개변수가 된다. 선언 - public static void Add(params int[] .. 2023. 7. 25.
[C#] 링크(LINQ) - SequenceEqual, Concat, Zip 시퀀스 작업(Sequence operations) 시퀀스 작업 메서드는 집합 전체를 대상으로 작업한다. SequenceEqual() 두 집합의 모든 요소가 같은 순서대로 있는지 비교할때 사용한다. var wordsA = new string[] { "cherry", "apple", "blueberry" }; var wordsB = new string[] { "cherry", "apple", "blueberry" }; bool match = wordsA.SequenceEqual(wordsB); // match = true var wordsA = new string[] { "cherry", "apple", "blueberry" }; // 순서를 변경하면 결과가 달라진다. var wordsB = new stri.. 2023. 7. 20.
반응형