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) 는 부동소수점 오차로 인해 정확도가 떨어지기 때문이다.

 

부동소수점 오차는 프로그래밍언어가 실수를 저장하는 방법에 의해 생기는 문제이다.

컴퓨터는 무한소수를 끝까지 정확하게 표현할 수 없어서 오차가 발생한다.

그래서 소수점 아래로 이동하면서 한 자리씩 출력하는 방식이 필요하다.

반응형