왜 0.1 + 0.2는..

이동규 (Justin)·2020년 8월 21일
1
post-thumbnail

0.3이 아닌가?

0.1 + 0.2 는 0.300000...0004 이다.

컴퓨터는 이진수로 모든 것을 표현한다. 그런데, 0.1과 같은 수는 이진수로 나누어 떨어지지 않아서, 이진수로 변환할 때 0.111111111... 과 같은 무한 소수가 되어 '정확하게 표현'할 수 없는 문제가 발생한다.

이와 같이 이진수로 정확히 표현할 수 없는 '실수'를 만나게 되면 어쩔 수 없이 근사치로 이런 값들을 저장하게 되고, 이 근사치로 저장하는 방식을 IEEE754 라는 표준으로 정해두었다.

해당 방식은 '부동소수점 (floating point)' 방식을 사용한다. 그 이유는 고정소수점 (fixed point) 방식을 사용한다면 긴 길이의 소수를 표현하기에 제한이 있기 때문에, 제한된 저장량에 더 정확한 수의 정보를 저장하기 위함이다.

기본적으로 double floating point 를 사용한다.

profile
Frontend Developer, JamStack, Ethereum

2개의 댓글

comment-user-thumbnail
2020년 8월 21일

다른 블로그에서는 너무 복잡하게 설명되어있는데, 엄청난 요약입니다, 잘보고 갑니다.

1개의 답글