Delphi Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
델파이 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
FreePascal/Lazarus
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
델마당
볼랜드포럼 광고 모집

델파이 Q&A
Delphi Programming Q&A
[5526] [답변] MRMAD/ Single type variable의 횡포
박지훈.임프 [cbuilder] 781 읽음    1999-01-15 09:57
안녕하세요. 천리안 프로그래머포럼 C++Builder 담당자 임펠리테리입니다.

그냥 참고삼아 써보는거니까.. 그냥 참고삼아 보세요.. ^^

실수의 경우 그런 현상은 일반적인 것으로 알고 있습니다. 처음으로 씨를 공부할때

그러한 정확하지 않은 값(?)이 나오는 것 땜에 황당해했던 기억이 나네요.

코드에서 5.82라고 쓰면, 프로그래머는 이게 십진수로 5.82 값이 들어간다고 생각하

기 쉽지만, 사실 컴파일러는 이걸 이진수로 바꾸어서 처리하는게 당연하기 땜에

이 십진수-> 이진수 변환 과정에서 얼마간의 오차가 생기는 거 같더군요.

만약 5.8200001717 와 같이 아주 조그만 오차가 생기는 것을 줄이시려면..

5.8200000000과 같이 계속 0울 지정해줘도 오차는 생길거구...

정확한 값을 얻고 싶으시다면, 아무래도.. 이런 방법을 쓰시는 건

어떨까 싶네요. 그러니까.. 잔머린데... ^^;;;

값(5.8200001717이 들어있겠죠)에다 100을 곱한 후 정수로 변환하고, 다시 실수로

변환해서 100을 나누어주면 되겠네요. 한가지 문제점이 있는데.. 보여주신 경우는

+ 오차값이 생겼지만, 실제로 하다보면 - 값이 생길 수도 있을겁니다.

그러니까, 어느정도의 값(얼마나 해줄 건지는 경험으로 알아낼 수밖에 없죠)을

더 더해주어야 할겁니다. 만약 오차가 0.0001 이하가 확실하다면, 이만큼을 항상

더해준다든지... 넘 잔머리였나... ^^;;;;




독립문에서 임펠리테리였습니다.

(cbuilder, cbuilder@thrunet.com)




+ -

관련 글 리스트
5526 [답변] MRMAD/ Single type variable의 횡포 박지훈.임프 781 1999/01/15
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.