float형의 유효숫자

somecan의 이미지

float형의 유효숫자가 7개로 알고 있는데요.

예를 들어

float a = 2.0e20;

printf("%f", a);

라고 실행하면 a값이 소수점형태로 출력이 되는데 위에서부터 7자리뒤의
값은 엉뚱한값이 나오네요.

예를 들어 20000000234234어쩌고 이런식룡.

뒤의 엉뚱한 값은 어떻게 결정되는건지 궁금합니다.

ysy의 이미지

float a = 2.0e20;
float형의 유효자리가 6자리 입니다.

---------------------

somecan wrote:
float형의 유효숫자가 7개로 알고 있는데요.

예를 들어

float a = 2.0e20;

printf("%f", a);

라고 실행하면 a값이 소수점 출력이 되는데 위에서부터 7자리뒤의
값은 엉뚱한값이 나오네요.

예를 들어 20000000234234어쩌고 이런식룡.

뒤의 엉뚱한 값은 어떻게 결정되는건지 궁금합니다.

vacancy의 이미지

우리는 대개 ..
N = a * 10^b
이런 식으로 수를 표현합니다만 ..
컴퓨터는 .. 좀 다르죠 ..
N = a * 2^b
이런 식으로 수를 표현합니다 ..

a, b에는 각각 일정 비트씩 배정되어있고요 ..
우리가 제시하는 수에 가장 가까운 a, b를 선택하게 되죠 ..
따라서 우리눈에 딱 떨어져 보이는 decimal 수가 나오진 않게 됩니다 ..

knight2000의 이미지

float형은 10진수로 표기할 때 유효자리가 최대 7자리입니다.

보통 때는 6자리라고 생각하시고 작업하세요.

정확한 값을 바라신다면,
float 형이 아닌 double 형을 사용하시기 바랍니다.

===== ===== ===== ===== =====
knight2000 of SALM.
SALM stood for SALM Ain't a Life Model.
SALM is not the life model, but SALM is just the life.