소숫점에 대한 문제

게시판 IDL Q&A 소숫점에 대한 문제

이 게시글은 1개 답변과 2명 참여가 있으며 마지막으로  Sangwoo에 의해 3 월, 3 주 전에 업데이트 됐습니다.

  • 글쓴이
  • #5269

    JAEHEE
    회원

    안녕하세요 언제나 도움 감사히 받고있습니다.

    이번에는 소숫점에 대한 질문이 있어서올리게 돼었습니다.

    예를 들어

    tbeg=577411200.00000000d
    sec=tbeg
    sec1=sec+0.05d
    라고 했을 때,
    sec1-sec= 0.05 가 정확히 나오고싶은데 실제 계산을 해보면.
    0.049999952
    이러한 값이 나오게 됩니다.

    저 작은 차이가 누적되어, 100만번 이상 반복하게 되면, 데이터에 약간의 오류를 범하게 되는데,
    0.05 가 나오게 하거나 아니면 적어도 1000만번 이상 반복되어야 오류가 발생하게 하는 법이 없을까요?

  • #5289

    Sangwoo
    회원

    언급하신 문제는 roundoff error라고 하는데, 모든 컴퓨터 프로그래밍 언어에서 공통으로 존재하는 이슈입니다. 2배 정밀도 실수의 경우 유효숫자의 자릿수가 15~16자리이므로, 소수점 앞뒤로 이 갯수만큼의 숫자만 수학적으로 정밀하게 산정됩니다. 사실 roundoff error를 없애는 방법은 딱히 없습니다. 주어진 자료형의 값을 사용하는데 있어서 유효숫자 갯수의 한계에 다다르지는 않을 정도로 계산 알고리즘을 다듬어야 한다는 정도 이상의 얘기는 해드리기가 힘들 것 같습니다.

답변은 로그인 후 가능합니다.