-코드
n = int(input())
a = "%.300f" % (1 / (2 ** n))
l = len(a)
for i in range(l - 1, 1, -1):
if a[i] != '0':
last = i
break
print(a[:last + 1])
처음에 그냥 1 / (2 ** n)으로 했는데 틀려서 이유를 몰라서 찾아보니 일정 범위 이상으로 가면 과학적 표기법을 사용하기 때문에 문제가 되는 것을 알게 되었고 질문 게시판을 보니 "%.300f" % (1 / (2 ** n))으로 범위를 확장시킬 수 있는 것을 알게 되고 for문을 이용하여 문자열을 0 이전까지만 출력하게 만들었습니다.
'Beakjoon&프로그래머스 > 파이썬' 카테고리의 다른 글
[백준/파이썬]1837번 암호제작 (0) | 2021.10.20 |
---|---|
[백준/파이썬]15664번 N과 M (10) (0) | 2021.10.20 |
[백준/파이썬]15663번 N과 M (9) (0) | 2021.10.18 |
[프로그래머스/파이썬] 없는 숫자 더하기 (1) | 2021.10.17 |
[백준/파이썬]5618번 공약수 (0) | 2021.10.17 |