컴퓨터로 부동소숫점 연산을 할 때는 조심해야 합니다.
내가 실제로 겪었던 한 예를 참고로 보냅니다.
아래 두 식은 동일해 보이지만, R에서 test해보면 어떤 결과가 나올까요?
99/(72*1.3) == 99/72/1.3
같은 내용을 MS-EXCEL에서도 test해보세요.
=IF(99/(72*1.3)=99/72/1.3,"T","F")
좀 더 자세한 것은 첨부파일을 참고하세요.
읽기 쉬운 것은 아닌데, 여유 되면 보세요.
2010-01-18
Subscribe to:
Post Comments (Atom)
첨부파일은 post가 안되네요. 몰랐어요.
ReplyDelete"What every computer scientist should know about float-point arithmetic.pdf" 로 검색하면 찾을 수 있습니다.
R도 double precision이라 15자리까지 표시되는 것으로 알고 있었는데 16자리까지 표시되기도 하네요.
ReplyDelete> 99/(72*1.3)
[1] 1.0576923076923075
> 99/72/1.3
[1] 1.057692307692308
엑셀은 14자리까지만 표시되는 것도 이제야 알았습니다.