책 내용 질문하기
55쪽 7번,63쪽 5번 문제 이해가 안됩니다
도서
2019 시나공 정보처리기사 실기(산업기사포함)
페이지
55,63
조회수
1734
작성일
2019-03-19
작성자
탈퇴*원
첨부파일
55쪽에서 7번 문제인 float b = 314.1592e+5; 가 어떻게 3.141592e+07이 되는지 궁금하고 63번에 5번 문제는 해설을 보긴했는데 이해 안되는 부분이 float a = 123456789.0e-5f; %f, %e와 같이 소수점 자리수가 없는 경우에는 기본적으로 소수점 자리수가 6자리가 표시됩니다. 그러므로 %f로 출력하면 1234.567890으로 표시되어야 하죠. 다만 문제에서 6.1f로 소수점 첫째자리만 출력하도록 되어 있으므로 둘째자리에서 반올림한 1234.6이 출력되게 됩니다. => 여기 부분에서 답이 1234.5가 될꺼 같았는데 5를 반올림해서 6이 됬다는데 왜 5를 반올림 하는건가요 ? 지수 출력 %e는 자릿수를 우측으로는 + 좌측으로는 -로 표기합니다. => 이부분때문에 55쪽 7번문제가 햇갈립니다 e+5면 소수점에 있는 숫자가 우측으로 5칸 이동한다는 뜻 아닌가요 ? 시스템에서 지수를 저장할 때 정수부를 한 자리로 변환 후 저장하니 이를 표현하자면, 1.234567890e+3가 됩니다. 지수 출력 또한 동일하게 소수점 6자리 까지만 출력하는 것이 기본이므로, 7자리에서 반올림하여 출력하게 되면 => 그리고 여기서는 6자리까지만 출력하는게 기본이면 1.234567e+3이 안되고 왜 6번째 자리 숫자인 7을 반올림해서 1.234568e+3이 되게 하는건가요? 1.234568e+3이 됩니다.
답변
2019-03-20 09:25:35

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

 

314.1592e+5 라는 지수표현을 C에서 받아들일 때는 정수자리를 한 자리로 변환하여 받아들입니다. 위 지수표현의 값은 314.1592 * 105​를 의미하므로, 정수 한 자리로 변환하면

3.141592 * 107이 되어 3.141592e+07이 됩니다.

 

5를 반올리해서 6이된 것이 아닙니다.

해설에서는 '둘째자리에서 반올림한'이라고 설명하고 있습니다.

즉 1234.567890에서 소수점 둘째 자리인 6에서 반올림되어 1234.6이 된것입니다.

 

소수점이 우측으로 5칸 이동한다는 의미입니다.

기본적인 지수표현을 학습해주세요.

12.345e+2 라는 값이 있다면 식으로 표현하면

12.345 * 10+2​를 의미합니다. 이 것을 계산하면 소수점이 우측으로 두자리 옮겨진 1234.5가 되겠죠.

 

소수점을 6자리를 출력할 때 7번째 자리인 8에서 반올림하여 6번째 자리의 수가 7에서 1 증가한 8이되어 1.234568e+3이 되는 것입니다. 반올림된 소수점 6자리 수를 출력하는 것이 C 소수점 출력의 원칙입니다. 이유를 물으신다면 printf() 함수를 처음 정의한 사람이 이 자리수와 반올림된 수가 가장 적합하다고 판단했기 때문이겠죠.

 

자리수의 구분을 확실히 해두세요. 조금 혼동하고 계신 것 같습니다.

 

10의 자리에서 반올림한다는 것은 100의 자리 표현을 쓰겠다는 의미

345 -> 300 ,   470 -> 500

소수점 7번째 자리에서 반올림한다는 것은 소수점 6자리 표현을 쓰겠다는 의미

0.12345678 -> 0.123457

반올림된 10의 자리 수를 사용하겠다는 것은 1의 자리에서 반올림 한다는 것을 의미

50 <- 53에서 반올림 됨

 

행복한 하루되세요 :)

  • 관리자
    2019-03-20 09:25:35

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

     

    314.1592e+5 라는 지수표현을 C에서 받아들일 때는 정수자리를 한 자리로 변환하여 받아들입니다. 위 지수표현의 값은 314.1592 * 105​를 의미하므로, 정수 한 자리로 변환하면

    3.141592 * 107이 되어 3.141592e+07이 됩니다.

     

    5를 반올리해서 6이된 것이 아닙니다.

    해설에서는 '둘째자리에서 반올림한'이라고 설명하고 있습니다.

    즉 1234.567890에서 소수점 둘째 자리인 6에서 반올림되어 1234.6이 된것입니다.

     

    소수점이 우측으로 5칸 이동한다는 의미입니다.

    기본적인 지수표현을 학습해주세요.

    12.345e+2 라는 값이 있다면 식으로 표현하면

    12.345 * 10+2​를 의미합니다. 이 것을 계산하면 소수점이 우측으로 두자리 옮겨진 1234.5가 되겠죠.

     

    소수점을 6자리를 출력할 때 7번째 자리인 8에서 반올림하여 6번째 자리의 수가 7에서 1 증가한 8이되어 1.234568e+3이 되는 것입니다. 반올림된 소수점 6자리 수를 출력하는 것이 C 소수점 출력의 원칙입니다. 이유를 물으신다면 printf() 함수를 처음 정의한 사람이 이 자리수와 반올림된 수가 가장 적합하다고 판단했기 때문이겠죠.

     

    자리수의 구분을 확실히 해두세요. 조금 혼동하고 계신 것 같습니다.

     

    10의 자리에서 반올림한다는 것은 100의 자리 표현을 쓰겠다는 의미

    345 -> 300 ,   470 -> 500

    소수점 7번째 자리에서 반올림한다는 것은 소수점 6자리 표현을 쓰겠다는 의미

    0.12345678 -> 0.123457

    반올림된 10의 자리 수를 사용하겠다는 것은 1의 자리에서 반올림 한다는 것을 의미

    50 <- 53에서 반올림 됨

     

    행복한 하루되세요 :)

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