부동소수점
- 다양한 방식으로 소수를 표현할 수 있어서 IEEE 표준을 정함. (IEEE 754-1985)
- '부동소수점’의 '부동’은 不動이 아니라 'Floating’이다.
부동소수점 인코딩
Binary FP to Decimal
0 | 0110 1000 | 101 0101 0100 0011 0100 0010
- Sign: 0이므로 positive
- Exponent: 0110 1000two=104ten
- Bias adjustment: Exponent−127=104−127=−23
- Mantissa: 1.10101010100001101000010 (첫 자리가
1
이므로 정규화된 표현)
1.10101010100001101000010=1+(1×2−1)+(0×2−2)+(1×2−3)+(0×2−4)+…=1+2−1+2−3+2−5+2−7+2−9+2−14+2−15+2−17+2−22=1.0+0.666115Mantissa×2Bias=1.666115ten×2−23≈1.986×10−7부동소수점 오류
- 무한 소수가 되는 2진 분수를 정확히 표현하지 않고 10진수 근삿값으로 표현한다.
- 따라서 실제 값과 오차가 발생한다. 실수는 동등 연산(
==
)으로 비교하면 안된다.
round()
등의 함수로 미리 소수를 가공한 뒤 연산하자.
참고자료
이 문서를 인용한 문서