컴퓨터가 소숫점 계산(Floating Point)을 잘 못하는 이유

Jinsung·2022년 2월 23일
0

핵심

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

10진법 유한소수 0.1은, 2진법에서는 무한소수입니다.

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

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

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

해결

10진수 연산을 소프트웨어적으로 코딩

0개의 댓글