부동 소수점 : 왜 0.1을 저장하면 오차가 생길까요?
부동 소수점은, 가수부와 지수부로 나누어서 저장을 합니다. 즉, (a)*2^b꼴로 저장을 하는데요. 이 때, a는 1보다 크거나 같고, 2보다 작은 실수입니다. 즉, (1.xxx)*2^b 꼴로 저장을 한다는 겁니다. 여기까지는 그리 어렵지 않을 것이라고 생각합니다. 보통 부동 소수점, 우리가 흔히 알고 있는 float이나 double형은 이런 식으로 저장이 됩니다. 지수부랑, fraction. 즉 가수부랑 나누어서 저장을 하고 있는데요. 이 fraction 부분은 (1.xxx)*2^b로 표현했을 때, 0.xxx 부분을 저장한다고 보시면 됩니다. 0.xxx를 2진수로 표현해서 저장할 겁니다. 그러면, 실제로 0.1이 어떻게 저장되는지 봅시다. 저는 먼저 double과 long long이 같은 메모리 공간을..
코딩/C
2019. 6. 29. 19:50
최근댓글