책 내용 질문하기
자바 간단한 문제 중에..
도서
2018 시나공 정보처리기능사 실기
페이지
0
조회수
321
작성일
2019-06-25
작성자
탈퇴*원
첨부파일

public class Main { 

public static void main(String[] args) {

float a = 123456789.0e-5f;

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

}

}

 

결과는 1234.567871 1.234568e+03 인데 

첫번째거는 5번째 전까지 실수형으로 출력해라는 의미인것 같은데

두번재 출력은 잘 이해안가네요.

왜 7은 빠진것이며.. 너무 헷갈려요 알려주세요!

 

답변
2019-06-25 14:06:56

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

 

float a = 123456789.0e-5f;

 

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

 

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

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

 

%e로 출력하면 

e는 정수 부분을 1자리만 출력하므로 1.234568 이 됩니다.

역시 소수점 마지막 6째 자리(8)는 7째 자리에서 반올림 된 것이고 1.234568 은 원래의 값 1234.56789에서 소수점 위치가 왼쪽으로 3자리 이동했으므로 e+3입니다. 위에서 지수부는 2자리로 표시한다고 하였으므로 e+03으로 표현하여 1.234568e+03으로 출력이 되는 것입니다.

 

행복한 하루되세요.^^

  • 관리자
    2019-06-25 14:06:56

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

     

    float a = 123456789.0e-5f;

     

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

     

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

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

     

    %e로 출력하면 

    e는 정수 부분을 1자리만 출력하므로 1.234568 이 됩니다.

    역시 소수점 마지막 6째 자리(8)는 7째 자리에서 반올림 된 것이고 1.234568 은 원래의 값 1234.56789에서 소수점 위치가 왼쪽으로 3자리 이동했으므로 e+3입니다. 위에서 지수부는 2자리로 표시한다고 하였으므로 e+03으로 표현하여 1.234568e+03으로 출력이 되는 것입니다.

     

    행복한 하루되세요.^^

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