소숫점에 대한 문제

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

1 답변 글타래를 보이고 있습니다
  • 글쓴이
    • #5269 Reply
      JAEHEE
      회원

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

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

      예를 들어

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

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

    • #5289 Reply
      Sangwoo
      회원

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

1 답변 글타래를 보이고 있습니다
'소숫점에 대한 문제'에 답변달기
글쓴이 정보: