CodeTree 방학 조별과제
[코드트리 조별과제] a/b 출력하기
히치하이커 J
2024. 7. 28. 17:09
반응형
난이도 : 어려움
문제 :
두 정수 와 가 주어집니다.
실수 의 값을 소수점 번째 자리에서 내림하여 출력하는 프로그램을 작성해보세요.
입력 형식 :
첫 줄에 두 정수 와 가 공백으로 구분되어 주어집니다(1<=a<=100, 1<=b<=100)
출력 형식 :
첫 줄에 의 값을 소수점 번째 자리에서 내림하여 출력합니다.
[예시 1]
입력 : 3 5
출력 : 0.60000000000000000000
[예시 2]
입력 : 3 7
출력 : 0.42857142857142857142
[내 코드]
a, b = map(int, input().split())
print(f"{a//b}", end=".")
a = a - (a//b)*b
for _ in range(20):
a *= 10
print(f"{a//b}", end="")
a -= (a//b)*b
[코드 설명]
[이렇게 해야 하는 이유]
"%.21f" %(a/b) 는 부동소수점 오차로 인해 정확도가 떨어지기 때문이다.
부동소수점 오차는 프로그래밍언어가 실수를 저장하는 방법에 의해 생기는 문제이다.
컴퓨터는 무한소수를 끝까지 정확하게 표현할 수 없어서 오차가 발생한다.
그래서 소수점 아래로 이동하면서 한 자리씩 출력하는 방식이 필요하다.
반응형