[C++] IEEE754 float의 유효숫자 범위가 6자리인 이유..
소수점표현의 경우에
[0.xxxxxx] 형태 일때 (지수부분은 10000000이 됩니다.)
0.111111111111111111111111
0.000000000000000000000001 (소수점 이하 24자리) 만큼 증가할때 더해지는 값
0.000000059604644775390625(10진수) 이므로 소수점 이하 7자리 까지 유효숫자로 볼 수 있을거 같습니다.
[xxxx.xx] 형태 일때 (지수부분은 13+127 = 10001100)
11111111111111.1111111111 =>
앞에(2^14 = 16384) 4자리 . 뒤에(2^-10 = 0.0009765625) 2자리이어야 하는데 뒤로 3자리까지 정확히 표현 가능하므로
따라서 총 7자리를 유효 숫자로 볼 수 있을거 같습니다.
[0.0000000000000000000000000000000000000xxxxxx]형태 일때
Normalize (최소값)
0 00000001 1.00000000000000000000000 =>0.000000000000000000000000000000000000011754942106924410754870294448493
0 00000001 1.00000000000000000000001
일때 더해지는 값
즉, 2^-149 만큼 더해질때..
=>+0.0000000000000000000000000000000000000000000014012984643248170709237295832899
마찬가지로 7자리까지 유효숫자로 볼 수 있을거 같습니다.
하지만 정수를 표현하는 경우에 16777216 이 불연속이 발생하지 않는 가장 큰 수 이므로 7자리까지는 정확히 표현 못합니다.
이러한 이유로.. 유효숫자 자리수를 정수표현의 경우에 맞춰서
6자리까지까지로 통일한것인가요?
댓글 달기