1.1 + 0.1 == 1.2가 false인 이유
·
Programming/C C# C++
요약 : 10->2진법 변환 한계로 소수 표현이 제대로 안되어서 연산 후 결과를 비트연산하게되면 다른값이 나올 수 있다. 가끔 소수점 단위 연산을 해야하는 경우가 있다. 예를 들어 0.1초마다 주위를 스캔한다던지, 무게를 0.25초마다 측정한다던지 하는 경우 말이다. 이런 경우 특별한 조치를 취해주지 않는다면 오류가 발생할 가능성이 있다. 예를 들어 이 사진의 경우 1.1 + 0.1이 1.2와 동일한지를 계산하는 코드이다. 상식대로라면 동일하다는 결과가 나와야 하지만 결과는 보다시피 거짓이 나오게 된다.어디가 문제일까?컴퓨터는 숫자를 저장할 때 바이트 단위로 수를 집어넣는다. 실수를 저장할때는 주로 float, double을 사용하는데, float는 4바이트, double은 8바이트라는 차이점이 있을 뿐..
C#) 문자열 입력 시 변수를 추가하는 방법
·
Programming/C C# C++
C#에서 작업을 할 때 String 함수를 사용하는 경우가 있다. 이때 문자열에 변수를 같이 사용하는 경우 입력하는 방식은 크게 세 가지 정도로 나뉜다. string name = "Alice";string greeting = "안녕하세요, " + name + "님!";Console.WriteLine(greeting);  이런 식으로 + 기호를 사용하여 문자열에 변수를 직접적으로 붙이는 방법이 있고, string name = "Alice";string greeting = $"안녕하세요, {name}님!";Console.WriteLine(greeting); $의 문자열 보간을 이용하여 문자열을 만드는 방식이 있고, string name = "Alice";string greeting = string.Forma..
C#과 C++에서의 for, foreach, for루프 사용법
·
Programming/C C# C++
우리가 흔히 사용하는 for문은 다음과 같은 형태로 구성되어 있다.for(초기식; 조건식; 증감식){ 구현부} 가장 기본적인 형태의 for문인데, 시작점에서 값을 증감시키면서 조건식이 성립하는 한 구현부를 반복하는 것이다. while문과도 유사한 형태를 가지고 있고, 실제로 다음과 같이 대체도 가능하다.초기식;while (조건식){ 구현부; 증감식;} C#과 C++에서는 이러한 for문을 조금 변형시켜서 컨테이너 내부를 순회하는 함수를 사용할 수 있다.바로 foreach문과 범위 기반 for문이다. foreach문은 C#에서 사용하는 특수한 형태의 반복문으로, 다음과 같은 형태로 사용된다.List fibNumbers = new() { 0, 1, 1, 2, 3, 5, 8, 13 };foreach..
메모리 계층구조
·
Programming/기타
폰 노이만은 CPU, 메모리, 프로그램을 핵심 구성요소로 삼는 폰 노이만 구조를 발표했다.이론상 튜링-완전한 구조이고, 컴퓨터에서 작업을 하고 다른 작업을 시킬 때 프로그램만 교체하면 된다는 장점으로 인해 대부분의 컴퓨터는 이 구조를 따르고 있지만, CPU와 메모리 간의 데이터 전송 속도 차이로 인해 병목 현상이 발생한다는 문제가 발생하게 되었다.이러한 병목 현상을 해결하기 위해 탄생한 것이 바로 메모리 계층 구조이다. 메모리 계층 구조메모리 계층 구조는 컴퓨터 시스템에서 데이터 접근 속도와 저장 용량의 균형을 맞추기 위해 설계된 구조이다.이 구조는 필요에 따라 여러 종류의 메모리를 계층적으로 배치하여 효율적인 데이터 관리를 가능하게 하는데, 레지스터 - 캐시 - 메모리 - 스토리지의 4단계로 구성하는 ..