Hi

0.1 + 0.2가 0.3이 아닌 이유 ?! 본문

Computer Science

0.1 + 0.2가 0.3이 아닌 이유 ?!

seungminleeee 2025. 9. 11. 16:15

프로그래밍에서 $0.1 + 0.2$을 계산하면 $0.30000000000000004$이 나온다. 그 이유는 무엇일까?

결론부터 말하자면 부동소수점 때문이다!

컴퓨터는 내부적으로 이진법을 사용해서 표현하고 있다.

정수의 경우 이진수로 정확하게 표현할 수 있지만 소수 부분은 조금 다르다.


📌이진법 소수 표현

먼저 $0.625$를 2진수로 바꿔보자.

0.625 = 1/2 + 0/4 + 1/8 → 0.101(2)

정확히 가능하다.

 

하지만 $0.1$의 경우에는 조금 다르다.

0.1 = 0.0001100110011001100...(2)

0.1에 가까워지기만 할 뿐 정확히 도달하지 못한다.

 

✅ 오차가 생기는 이유

컴퓨터는 메모리에 유한한 비트만 저장할 수 있다.

따라서 2진수로 무한 소수가 되어버리는 0.1, 0.2와 같은 수는 가까운 근삿값으로 저장된다.

 

이 상태에서 덧셈을 하면 0.3이 아닌 0.30000000000000004 같은 값이 나오게 된다.

 


🤔 왜 아직도 이 문제를 해결하지 않을까?

효율성 때문이다!

대부분의 컴퓨터는 IEEE 754 부동소수점 표준을 따른다. 이 방식은 빠르고 효율적인 연산이 가능하다.

또 모든 소수를 정확하게 표현한다면 속도와 메모리 사용량이 크게 늘어나 비효율적일 것이다.

 

 

❗정확한 계산이 필요하다면

이 오차를 아예 해결할 수 없는 것은 아니다!

정확한 계산이 필요한 경우에는 decimal과 같은 라이브러리를 이용하면 된다.