| 이전 주제 보기 :: 다음 주제 보기 |
| 글쓴이 |
메시지 |
유진선
가입: 2011년 10월 5일 올린 글: 25
|
올려짐: 2014년10월30일 15:39 주제: 챌린지1번 소수점 관련 질문입니다. |
|
|
self-grader의 결과로 O가 나오기만 하면 되는건가요 ??
소수점 아래 7~8번째 자리에서 값이 다르게 나오기도 하는데 상관없는건가요 ? |
|
| 위로 |
|
 |
김윤승
가입: 2014년 9월 1일 올린 글: 452 위치: 302동 312-2호
|
올려짐: 2014년10월30일 18:16 주제: |
|
|
소수점 문제 때문에 자동채점 한 후에 수동 채점도 고려하고 있는 중입니다..
그런데, 소수점 아래 값이 다르게 나오는데 self grader에서는 O가 나오나요? |
|
| 위로 |
|
 |
유진선
가입: 2011년 10월 5일 올린 글: 25
|
올려짐: 2014년10월30일 20:06 주제: |
|
|
네
((A . 12.162162161758499) (B . 12.162162161758502) (C . 20.2702702695975) (D . 55.4054054035665))
((A . 12.162162162162147) (B . 12.162162162162147) (C . 20.270270270270245) (D . 55.40540540540534))
이렇게 두개가 다른데도 O 라고 출력됩니다.
제가 4개일 경우 초기값을 각각 1/4씩으로 해서 답이 조금 다르게 나오는건가요 ??
Racket에서
(= (/ 1 10) 0.1) 하면 #f가 나오는걸로 봐서 Racket 소수점 계산이 조금 다른것 같습니다.
저정도의 오차도 해결해야 하나요 ? |
|
| 위로 |
|
 |
김윤승
가입: 2014년 9월 1일 올린 글: 452 위치: 302동 312-2호
|
올려짐: 2014년10월30일 20:45 주제: |
|
|
결과가 거의 비슷하면 됩니다.
racket의 소수점 아래 구현이 어떻게 되어있는지는 모르지만, 분수의 경우에는 정확히 같을 때에만 같다고 하고, 소수일 경우에는 특정 값보다 차이가 적을 때에는 같은 수로 보는 것으로 추측됩니다. |
|
| 위로 |
|
 |
유진선
가입: 2011년 10월 5일 올린 글: 25
|
올려짐: 2014년10월30일 22:06 주제: |
|
|
| 네 갑사합니다. 답변 확인했습니다. |
|
| 위로 |
|
 |
오평석
가입: 2014년 10월 17일 올린 글: 8
|
올려짐: 2014년10월30일 22:23 주제: |
|
|
equal? 의 경우 eps = 10^-16 정도로 잡는 것 같더군요.
| 코드: | > (equal? 0.5 0.4999999999999999)
#f
> (equal? 0.5 0.49999999999999999)
#t |
이와 별도로, self-grader에서는 item-match? 함수로 값을 비교하고 있는데,
| 코드: | (define (item-match? l r)
(and (equal? (car l) (car r))
(or
(and (< (cdr l) 0.001) (< (cdr r) 0.001))
(let ([ratio (/ (cdr l) (cdr r))])
(and (< 0.99 ratio) (< ratio 1.01)))))) |
를 보면 ratio로 (0.99 ~ 1.01) 정답 유무를 판단하고 있는 것 같습니다  |
|
| 위로 |
|
 |
|