책 내용 질문하기
63페이지 문제 5번 질문입니다
도서
2019 시나공 정보처리기사 실기(산업기사포함)
페이지
63
조회수
146
작성일
2019-05-17
작성자
탈퇴*원
첨부파일

float a = 123456789.0e-5f

왜 %6.1f에서는 1234.6 으로 출력되고,

왜 %e 형태로 출력될 때는 1.234568e+03 으로 바뀌나요?

 

소수점 관련해서 이해가 거의 되지 않아 질문 남깁니다.

 

답변
2019-05-21 14:46:15

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

 

먼저 지수 형태가 실수로 저장될 시 어떤 값으로 저장되는지 환산해보세요.

123456789.0e-5  ->  1234.56789 가 됩니다.

 

이것을 서식문자열 %6.1f를 적용해보세요.

6.1f는 6자리를 확보하여 소수점은 1자리수만 출력하라는 의미입니다.

소수점을 의미하는 '.' 또한 1자리를 차지하므로 

1234.5가 출력되어야 하지만 소수점 둘째자리가 5이상이므로 반올림되어 1234.6이 출력되는 것입니다.

 

%e는 지수를 다시 한 번 언어 형식에 맞게 변환해주어야 합니다.

C나 Java에서는 지수를 출력 할 때, 정수부를 한 자리로 표현하고, 소수부는 6자리, 지수부는 2자리로 표현합니다.

즉, 1234.56789를 정수 한 자리 지수로 표현하기 위해서는

1.23456789e+3이 되고,

소수부 6자리라고 하였으니 7째 자리에서 반올림한,

1.234568e+3이 되고,

지수부 2자리라고 하였으니 0을 추가하여

1.234568e+03이 되는 것입니다.

 

행복한 하루되세요 :)

  • 관리자
    2019-05-21 14:46:15

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

     

    먼저 지수 형태가 실수로 저장될 시 어떤 값으로 저장되는지 환산해보세요.

    123456789.0e-5  ->  1234.56789 가 됩니다.

     

    이것을 서식문자열 %6.1f를 적용해보세요.

    6.1f는 6자리를 확보하여 소수점은 1자리수만 출력하라는 의미입니다.

    소수점을 의미하는 '.' 또한 1자리를 차지하므로 

    1234.5가 출력되어야 하지만 소수점 둘째자리가 5이상이므로 반올림되어 1234.6이 출력되는 것입니다.

     

    %e는 지수를 다시 한 번 언어 형식에 맞게 변환해주어야 합니다.

    C나 Java에서는 지수를 출력 할 때, 정수부를 한 자리로 표현하고, 소수부는 6자리, 지수부는 2자리로 표현합니다.

    즉, 1234.56789를 정수 한 자리 지수로 표현하기 위해서는

    1.23456789e+3이 되고,

    소수부 6자리라고 하였으니 7째 자리에서 반올림한,

    1.234568e+3이 되고,

    지수부 2자리라고 하였으니 0을 추가하여

    1.234568e+03이 되는 것입니다.

     

    행복한 하루되세요 :)

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