Q&A

  • Float 가 문제가 많이 생겨서 varchar 로 설정해서 사용하면 어떨까요?
MS-SQL 2000
델파이 6

안녕 하세요..
요즘 거래처 재고 계산 하는 과정에서 문제가 많이나 혹시나 하고 문의 드립니다.
분명이 '0'이 나와야 하는데 '-14' 라고 나오길래 db 접속해서 데이터 일일이 확인해 보니
0.000000000000000000001 뭐 이런 식으로 데이터가 들어갔더라구요..

이걸 소스에서 읽어서 체크 하기 위해 마우스 가져다가 무슨 데이터가 들어가나 했더니
'-14E12' 이런 데이터가 들어 가더군요..

헉... 이러니 계산하고 나오는 데이터가 볼때마다 이상하더라구요..ㅠ.ㅠ

decimal 등으로 변환도 해 봤는데 한번 들어간 데이터는 계속 문제가 되더군요.. 지우고 다시 넣어도 같고...

그래서 생각하게된게 varchar 20자리 정도로 넣어서 하면 어떨까 하는 생각이 들어서 그러는데..

이글 읽으시는 분들의 생각은 어떠신지 답변좀 부탁드립니다..

아니면 다른 좋은 방법 있으면 알려 주세요.. 정말 미치겠습니다.
3  COMMENTS
  • Profile
    최용일 2008.01.12 04:46
    -14E12는 우리가 눈으로 확인할 수 있는 IEEE에서 정한 표기법에 불과합니다. 눈으로 확인할때나 쓰이는것이지 컴퓨터 내부 연산에는 별 영향이 없습니다.

    예를 들어 4E-12는 0.000000000004와 똑같습니다.

    실수 계산에서 영향을 미치는 것은 컴퓨터의 디지털구조의 한계로 인하여 생기는, 각각의 실수 자료형마다 가지는 유효자릿수가 있습니다.

  • Profile
    박준영 2008.01.12 07:59
    답변 감사합니다.. ^^

    눈으로 확인하던 안하던 그 데이터가 있어서 프로그램에서 연산을 시도할때 원하는 값이 아닌 이상한 값이 나온다면 큰 문제 잖아요..
    그래서 다른 방법을 간구해 보려는 거구요..
    처음 필드를 만들때 varchar 로 만들어 데이터를 '0' 이 문자로 들어 갔다면 0.000000000004 라는 데이터는 들어가지 않았을꺼 같은데요..ㅠ.ㅠ
    그래서 함 생각해 봅겁니다.
    지금 필드형태가 float 이고 한번 아래와 같이 이상한 숫자가 들어가면 데이터를 우너하는 값으로 변경해도 비슷하게 에러난 데이터가 들어 간다는 문제가 계속 발생합니다.
    최용일님.. 뭔가 좋은 방법을 없을까요?


  • Profile
    최용일 2008.01.15 05:48
    이해를 잘 못하시는것 같은데요...

    표기법(이상한값)이 문제가 되는게 아니라 실수의 유효자릿수가 문제가 되는것입니다.

    1/3같은 경우는 컴퓨터로 표현할 수 없는 실수입니다. 이러한 수들을 표현하기 위해서 유효자릿수를 정한것입니다. 유효자릿수까지만 올바른 데이터라고 생각하시고 계산하세요.