책 내용 질문하기
float의 표시 문의
도서
2019 시나공 정보처리기사 실기(산업기사포함)
페이지
63,115
조회수
360
작성일
2019-05-04
작성자
탈퇴*원
첨부파일
업무에 고생이 많으십니다. ㅇ 문의1 - 115쪽 문제8 문의입니다. 123456789.0e-5f를 %f 와 %e로 표시할 때 1234.567890 이 아닌 1234.567871인 이유가 궁금합니다. ㅇ 문의2 그리고 %e는 1.234568e+03이던데 중간에 7이 사라지더군요..혹시 한계점 등으로 그 숫자는 사라져버리는 것인지요? 63쪽의 문제 5번도 같은 결과입니다. ㅇ 문의3 63쪽 문제5에서, 1234.6의 설명을 보니 총 6자리를 배정하고 소수점 이하 1자리만 남긴다 함을 이해했습니다. 그렇다면 저 소수점도 6자리 안에 들어가기 때문에.. 그 자리에 위치하여야할 숫자 5가 사라져버리는 것인지요? 이상 문의드립니다. 감사합니다..
답변
2019-05-07 11:40:52

안녕하세요 길벗수험서 운영팀입니다.

 

[1]

float a = 123456789.0e-5f;

 

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

 

그러므로 %f로 출력하면 1234.567890으로 표시되어야 하는데, 지수를 실수로 표현할 때 부족한 자리수 변환 시 정규화 과정의 오차로 인해 예상과 다른 값이 표시됩니다.

이로 인해 예상과 다른 결과가 표시되도록 자리수가 부족한 표현은 시험에 출제되지 않을 것으로 예상됩니다. 그러니 적용 원리에 맞는 형태만 파악해 두세요.

 

 

[2]

반올림의 결과입니다.

위에서 설명드렸듯이 소수점 자리수는 6자리까지 표현됩니다.

때문에 7번째 자리인 8에서 반올림된 수가 7에 더해져 1.234568이 표시되는 것입니다.

 

 

[3]

6.1f는 소수점 1자리를 포함한 6자리 수를 표시하라는 의미입니다.

때문에 1234.56789 에서 소수점(.)을 포함한 6자리인 1234.5가 표시되야 합니다.

잘린 자리는 위와 같이 반올림으로 인해 1234.6이 됩니다.

(소수 두번째 자리 6에서 반올림된 수가 앞의 5에 +1을 한 것)



행복한 하루되세요 :)

  • 관리자
    2019-05-07 11:40:52

    안녕하세요 길벗수험서 운영팀입니다.

     

    [1]

    float a = 123456789.0e-5f;

     

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

     

    그러므로 %f로 출력하면 1234.567890으로 표시되어야 하는데, 지수를 실수로 표현할 때 부족한 자리수 변환 시 정규화 과정의 오차로 인해 예상과 다른 값이 표시됩니다.

    이로 인해 예상과 다른 결과가 표시되도록 자리수가 부족한 표현은 시험에 출제되지 않을 것으로 예상됩니다. 그러니 적용 원리에 맞는 형태만 파악해 두세요.

     

     

    [2]

    반올림의 결과입니다.

    위에서 설명드렸듯이 소수점 자리수는 6자리까지 표현됩니다.

    때문에 7번째 자리인 8에서 반올림된 수가 7에 더해져 1.234568이 표시되는 것입니다.

     

     

    [3]

    6.1f는 소수점 1자리를 포함한 6자리 수를 표시하라는 의미입니다.

    때문에 1234.56789 에서 소수점(.)을 포함한 6자리인 1234.5가 표시되야 합니다.

    잘린 자리는 위와 같이 반올림으로 인해 1234.6이 됩니다.

    (소수 두번째 자리 6에서 반올림된 수가 앞의 5에 +1을 한 것)



    행복한 하루되세요 :)

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