책 내용 질문하기
104쪽 8번 문제가 잘 이해가 되지 않습니다.
도서
2017 시나공 정보처리기사 실기(산업기사 포함) 특별개정판
페이지
104
조회수
799
작성일
2017-04-04
작성자
첨부파일

앞쪽에서 소수점자리수를 지정해주는 걸 토대로 이해가 되었다고 생각했는데 도무지 이해가 되지 않습니다.

float a = 123456789.0e-5f;

System.out.printf("%f %e/n", a, a);

이 부분에서 실수형 변수를 %f로 출력하면 왜 답이 1234.567871 이 되는지 도저히 이해가 되지 않습니다.

그리고 정규화하는 방법을 잘 모르겠습니다.

1.234568e 여기까지는 이해가 되는데 마지막에 03이 왜 붙는지 이해가 안갑니다.

앞에 0이 붙는 이유가 +부호를 나타내서 0이 붙는건가요?

만약 10의 마이너스3승이 나오면 정규화 후에 마지막이 13이 되는 건가요?

답변
2017-04-05 10:08:44

안녕하세요.

float a = 123456789.0e-5f;

%f, %e와 같이 소수점 자리수가 없는 경우에는 기본적으로 소수점 자리수가 6자리가 표시됩니다.

그러므로 %f의 경우

1234.567890으로 표시되어야 하는데, 지수를 실수로 표현할 때 부족한 자리수 변환 시 정규화 과정의 오차로 인해 예상과 다른

값이 표시됩니다. 이로 인해 예상과 다른 결과가 표시되도록 자리수가 부족한 표현은 시험에 출제되지 않을 것으로 예상됩니다.

그러니 적용 원리에 맞는 형태만 파악해 두세요.

%e로 출력하면

소수점 자리수가 지정되지 않으면 f나 e는 모두 기본적으로 소수점 6자리로 출력합니다.

123456789.0e-5f 에 의해 지수형태로 저장된 a의 값을 원래대로 변경하면 소수점 위치를 왼쪽으로 5칸 이동한 값인

1234.56789가 됩니다.

e는 정수 부분을 1자리만 출력하므로

1.234568 이 됩니다. 역시 소수점 마지막 6자리는 7째 자리에서 반올림 된 것이고

1.234568 은 원래의 값 1234.56789에서 소수점 위치가 왼쪽으로 3자리 이동했으므로 e+03이 되어

1.234568e+03으로 출력이 되는 것입니다.

오늘도 즐거운 하루 되세요.

  • *
    2017-04-05 10:08:44

    안녕하세요.

    float a = 123456789.0e-5f;

    %f, %e와 같이 소수점 자리수가 없는 경우에는 기본적으로 소수점 자리수가 6자리가 표시됩니다.

    그러므로 %f의 경우

    1234.567890으로 표시되어야 하는데, 지수를 실수로 표현할 때 부족한 자리수 변환 시 정규화 과정의 오차로 인해 예상과 다른

    값이 표시됩니다. 이로 인해 예상과 다른 결과가 표시되도록 자리수가 부족한 표현은 시험에 출제되지 않을 것으로 예상됩니다.

    그러니 적용 원리에 맞는 형태만 파악해 두세요.

    %e로 출력하면

    소수점 자리수가 지정되지 않으면 f나 e는 모두 기본적으로 소수점 6자리로 출력합니다.

    123456789.0e-5f 에 의해 지수형태로 저장된 a의 값을 원래대로 변경하면 소수점 위치를 왼쪽으로 5칸 이동한 값인

    1234.56789가 됩니다.

    e는 정수 부분을 1자리만 출력하므로

    1.234568 이 됩니다. 역시 소수점 마지막 6자리는 7째 자리에서 반올림 된 것이고

    1.234568 은 원래의 값 1234.56789에서 소수점 위치가 왼쪽으로 3자리 이동했으므로 e+03이 되어

    1.234568e+03으로 출력이 되는 것입니다.

    오늘도 즐거운 하루 되세요.

· 5MB 이하의 zip, 문서, 이미지 파일만 가능합니다.
· 폭언, 욕설, 비방 등은 관리자에 의해 경고없이 삭제됩니다.