0.1 + 0.2 == 0.3이 True가 아닌 이유

Jipoleon·2021년 5월 20일
0

여러 잡다한 지식

목록 보기
1/2
post-thumbnail

float 타입의 변수 a와 b에 각각 0.1과 0.2를 넣고 더하면 무슨 값이 나올까?
당연히 0.3이라고 대부분 대답을 할 것이다.


하지만, 0.1 + 0.2인데도 불구하고 0.3이 나오는 것이 아니라 0.30000000000000004가 나온다.

대체 왜지? python 버그인가?라고 생각이 들 수 있는데,

이러한 값이 나오는 원인은 버그가 아니라 컴퓨터는 모든 숫자를 0과 1로만(2진법) 표현할 수 있기 때문에 소수도 0과 1로 표현하는 과정에서 저렇게 오차가 나는 것이다.

각종 프로그래밍 언어에서는 소수를 표현할 때

IEEE 754 부동 소수점 방식으로 소수를 표현하게 되는데

다른 방식인 고정 소수점 방식과 비교해 보자면

고정 소수점 방식은 소수를 정확하게 표현할 수 있지만, 그 범위가 상대적으로 적기 때문에 범위가 훨씬 더 넓은 IEEE 754 부동 소수점 방식을 사용한다.

하지만, 부동 소수점 방식은 범위가 넓은 대신 값이 정확하게 떨어지지 않고 근사치만 제공해주게 된다.

따라서 위의 연산의 결과가 0.3이 아니라 저렇게 나오는 것이다.

profile
I Love AI

0개의 댓글