책 내용 질문하기
float형식으로 입력하는데 왜 exponent 표기가 나오는 것이죠?
도서
2020 시나공 정보처리기사 실기 [기본서]
페이지
108,124
조회수
223
작성일
2020-06-16
작성자
탈퇴*원
첨부파일

안녕하세요. 

 

108쪽 예제1의 6번 문제에 대한 질문입니다.

float형식으로 입력하는데 왜 exponent표기형식으로 저장이 되는지 궁금합니다.

제가 생각했을 때는 0.00000262가 저장되는 것인줄 알았습니다.

C언어에서는 %e로 저장하면 2.62e-06이었고

%f로 저장하면 0.00000262였는데 파이썬에서는 다른가요?

 

124쪽 문제1번에 대한 질문입니다.

저는 print(str01)을 하면 

S

I

K

D

D

P

이렇게 저장되는 줄알았습니다.

109쪽에 예제2의 문제 3번에서는

print('help')

print('me')

이렇게 출력하면 값이

help

me

이렇게 띄어져서 나온다고 하여 위의 문제도 저렇게 띄어져서 출력되는 줄 알았습니다.

무엇이 다른 것인가요?

 

 

답변
2020-06-17 10:25:02

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

 

[108p]

먼저 컴퓨터에 저장되는 모든 실수는 지수형으로 들어오든 일반 실수형으로 들어오든 결국 메모리에 저장될 때는 부동소수점 저장 방식으로 저장됩니다. (지수형태로 저장된다, 일반 실수형태로 저장된다는 잘못된 표현입니다.)

scanf나 input과 같은 입력 함수에서 서식지정자나 자료형을 지정해주는 것은 "입력되는 데이터가 이러한 형태이니 저장 시 변환에 주의해라" 정도가 됩니다.

그리고 교재에 적힌 [결과]는 그저 데이터가 제대로 저장되었는지, 잘리지는 않았는지를 확인하기 위해 보여드리는 것일뿐, 그 형태(지수형/일반형 실수)는 출력 서식지정자에 따라 변화하게 됩니다.

추가로 파이썬은 입력되는 데이터가 지수형이든 무엇이든 실수이면 float를 사용하며,

c, java에서도 scanf 시 %f를 사용하고 화면에 지수형 실수를 입력해도 정상적으로 저장됩니다.

 

float a;

scanf("%f", &a);  - "123.4e-5" 입력

printf("%e, %f", a, a);   - "1.234000e-03, 0.001234" 출력

 

 

[124p]

109쪽에서는 print문을 여러 번 사용하였고,

124쪽에서는 str01에 문자들을 더한 후, print문을 한 번만 사용했기 때문입니다.

print문은 기본적으로 sep값으로 공백 한 칸을, end값으로 줄 넘김을 갖고 있습니다.

때문에 print문 하나로 여러 값을 출력하면 사이사이에 공백이,

여러 print문으로 출력하면 사이사이에 줄 넘김이 들어가게 되죠.

124쪽에서는 print문을 한 번만 사용하였고, 글자들의 합은 str01 = str01 + i[0]를 통해 이루어졌기 때문에 다른 경우가 됩니다.

 

행복한 하루되세요 :)

  • 관리자
    2020-06-17 10:25:02

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

     

    [108p]

    먼저 컴퓨터에 저장되는 모든 실수는 지수형으로 들어오든 일반 실수형으로 들어오든 결국 메모리에 저장될 때는 부동소수점 저장 방식으로 저장됩니다. (지수형태로 저장된다, 일반 실수형태로 저장된다는 잘못된 표현입니다.)

    scanf나 input과 같은 입력 함수에서 서식지정자나 자료형을 지정해주는 것은 "입력되는 데이터가 이러한 형태이니 저장 시 변환에 주의해라" 정도가 됩니다.

    그리고 교재에 적힌 [결과]는 그저 데이터가 제대로 저장되었는지, 잘리지는 않았는지를 확인하기 위해 보여드리는 것일뿐, 그 형태(지수형/일반형 실수)는 출력 서식지정자에 따라 변화하게 됩니다.

    추가로 파이썬은 입력되는 데이터가 지수형이든 무엇이든 실수이면 float를 사용하며,

    c, java에서도 scanf 시 %f를 사용하고 화면에 지수형 실수를 입력해도 정상적으로 저장됩니다.

     

    float a;

    scanf("%f", &a);  - "123.4e-5" 입력

    printf("%e, %f", a, a);   - "1.234000e-03, 0.001234" 출력

     

     

    [124p]

    109쪽에서는 print문을 여러 번 사용하였고,

    124쪽에서는 str01에 문자들을 더한 후, print문을 한 번만 사용했기 때문입니다.

    print문은 기본적으로 sep값으로 공백 한 칸을, end값으로 줄 넘김을 갖고 있습니다.

    때문에 print문 하나로 여러 값을 출력하면 사이사이에 공백이,

    여러 print문으로 출력하면 사이사이에 줄 넘김이 들어가게 되죠.

    124쪽에서는 print문을 한 번만 사용하였고, 글자들의 합은 str01 = str01 + i[0]를 통해 이루어졌기 때문에 다른 경우가 됩니다.

     

    행복한 하루되세요 :)

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