컴퓨터가 Floating Point를 잘 다루지 못하는 이유

J.Noma·2021년 11월 14일
0

컴퓨터 공학

목록 보기
7/18
post-custom-banner

유튜브영상 : 개발자 라라


영상에서 필요한 부분만 발췌한 포스팅으로, 자세한 내용은 유튜브영상을 참고 바랍니다

컴퓨터가 Floating Point 연산을 잘 못하는 이유

0.1 x 0.1처럼 우리가 멀쩡한 유한소수점끼리 연산을 하더라도 컴퓨터는 정확히 연산하지 못합니다

왜 그런걸까요?

핵심은
숫자를 다룰 때, 우리는 10진법을 사용하지만 컴퓨터는 2진법을 사용한다는 것
그리고, 10진법에서 유한소수인 수가 2진법에서는 무한소수일 수 있다는 점입니다

10진법에서 유한소수가 2진법에서 무한소수인 경우

대표적인 예가 10진수 0.1 입니다

1/10 이라는 소수의 분모에 어떤 수를 곱하더라도 2의 제곱수를 만들 수 없으므로
10진법 유한소수 0.1은, 2진법에서는 무한소수입니다

오차발생

컴퓨터가 무한소수를 전부 저장할 순 없으므로 정해진 bit수만큼만 저장하고 나머지는 반올림 후 버리게 됩니다

이로 인해, 우리가 10진법으로 유한소수를 다루더라도 컴퓨터는 정확히 연산할 수 없습니다

단, 오해하지 말아야 할 점은 0.1을 출력하면 그대로 0.1이 나오게 되는데
이는 어떤 방법으로 정확하도록 개선했다기보단 반올림 결과가 우연히 원본과 맞아떨어졌을 가능성이 높습니다
표현 자릿수를 늘리면 오차가 발견됩니다

해결방법

10진수 연산을 소프트웨어적으로 직접 구현하는 방법..이 있겠습니다

profile
노션으로 이사갑니다 https://tungsten-run-778.notion.site/Study-Archive-98e51c3793684d428070695d5722d1fe
post-custom-banner

0개의 댓글