gratus907   4년 전

분명히 충분히 큰 정밀도를 잡고 돌리고 있는것 같은데 무슨 문제인지 계속 95% 근처에서 틀리네요...

방법이 아예 잘못된 것인가요??? 예제와 게시판 반례는 다 잘 나오는 것 같습니다 ㅠㅠ

wider93   4년 전

먼저 제가 이 문제를 푼 적이 없어 아무말일 수 있음을 양해바라며...

문제의 포인트는 반올림 과정에 문제가 생기지 않게 하는 것 같은데, 

그렇다면 tol을 정해놓고 딱 거기까지 줄여나가는 방법으로는 lo와 hi가 반올림 경계 양쪽에 있을 가능성을 완전히 제거하지 못할 것 같습니다. 대신에 두 점에서 라운드값이 같은가를 종료조건으로 두면 어떨까 싶네요.

(물론 속도는 포기하게 됩니다만...)

gratus907   4년 전

설마 10^-60인데 그 사이에 lo와 hi가 들어가는 케이스가 있을까 싶긴 했습니다만, 일단 

while round(lo, 6) != round(hi, 6) :

으로 돌렸는데 똑같이 95%에서 틀리네요...ㅠㅠㅠ

gratus907   4년 전

그래도 생각지 못한 좋은 포인트를 잡아주신 것 같습니다. 감사합니다 :) 

doju   4년 전

틀리는 원인일지는 모르겠으나 라이브러리를 잘못 사용하고 계십니다. Decimal(0.1)Decimal('0.1')을 비교해 보세요.

gratus907   4년 전

@doju

앗...이게 문제였네요...

감사합니다 ㅠㅠ 라이브러리 사용방법을 제대로 모르고 있었네요.

댓글을 작성하려면 로그인해야 합니다.