• 카테고리

    질문 & 답변
  • 세부 분야

    프로그래밍 언어

  • 해결 여부

    미해결

%f를 이용한 소수부 출력

20.07.06 15:36 작성 조회수 148

0

안녕하세요,

%f 부분을 따라하다가 의문이 생겨 질문 남깁니다.

1. print('%20.2f' % (34.14343434))

2. print('%20.10f' % (34.14343434))

1번의 의도는 20자리를 확보하고 정수부, . , 소수부는 2자리까지만 출력하고 그 외에는 모두 0으로 자리를 채우겠다.

2번의 의도는 20자리를 확보하고 정수부, . , 소수부는 10자리까지만 출력하되, 입력받은 실수의 소수부의 길이(8)보다 출력할 소수부의 길이 값(10)이 크면 그 차이(2)를 포함해 모두 0으로 자리를 채우겠다였습니다.

실제로 출력결과도

1번의 경우 00000000000000034.14

2번의 경우는 000000034.1434343400로 제가 의도한 대로 잘 나와줬습니다.

그런데 문제는 3번에서 생겼습니다.

3. print('%020.15f' % (34.14343434)) 을 출력하니

0034.143434339999999 이런식의 결과가 나온것을 확인할 수 있었습니다.

왜 2번과 결과가 차이가 나는지 모르겠으며, 2번처럼 결과가 나오게 하고자하면 어떻게 해야하는지 궁금합니다.

답변 3

·

답변을 작성해보세요.

0

부동 소수점 연산에 대해서 읽어보세요.

https://winterj.me/floating-point-in-python/

0

wldls0530님의 프로필

wldls0530

질문자

2020.07.07

안녕하세요, 답변 감사합니다. 그래도 아직 의문점이 있습니다.

네 그렇다면 print('%020.15f' % (34.14343434)) 이 부분에서는 0034.143434340000000 이렇게 되어야하는 것 아닌가요?

제 컴퓨터에서는 0034.143434339999999 이렇게 출력되길래 이해가 안가는것이였습니다.

0

안녕하세요.

아래 내용을 정확하게 읽어보시고 모자르는 부분은 0으로 채워진다, 기본적으로 6자리로 표시된다.

규칙만 알고 다시 이해해 보세요!

24.2.3  서식 지정자로 소수점 표현하기

숫자 중에 소수점으로 된 실수를 넣어야 할 경우도 있습니다.

  • '%f' % 숫자
>>> '%f' % 2.3
'2.300000'

실수를 넣을 때는 %f를 사용하며 고정 소수점 fixed point의 f입니다. %f는 기본적으로 소수점 이하 6자리까지 표시하므로 2.3은 2.300000으로 표시됩니다.

소수점 이하 자릿수를 지정하고 싶다면 다음과 같이 f 앞에 .(점)과 자릿수를 지정해주면 됩니다.

  • '%.자릿수f' % 숫자
>>> '%.2f' % 2.3
'2.30'
>>> '%.3f' % 2.3
'2.300'