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

C++빌더 Q&A
C++Builder Programming Q&A
[61613] Re:double변수 계산기 부동소수점? 관련 문제 질문입니다.
aaa [] 1930 읽음    2010-06-20 14:20
십진수를 이진수로 바꾸면서 발생하는 오차도 있고 자료형에 따는 유효자릿수의 문제도 있어요
자릿수가 아주 많은 수를 그나마 정확하게 표기하거나 계산하려면 노트에 손으로 써가며 계산하듯이 하는 함수를 만드셔야 해요.

double 형의 경우 소수점 아래 수에 해당하는 비트수가 52개이므로 이진수로는 52자리 십진수로는 대략 16자리의 유효자릿자를 표시할 수 있어요. 참고로, 값(수)은 정규화돼서 지수형으로 저장돼요.
제시하신 수의 경우 유효자릿수가 십진수로 15개네요.
그런데 이 수를 이진수로 변환하면서 발생하는 오차는 유효자릿수가 적어서 충분히 만회할 여지가 없겠네요.
이진수로 정확하게 변환할 수 없는 십진 실수가 있어요. 그 경우 자료형의 유효자릿수가 충분하면 충분히 근사가 되지만 그렇지 않은 경우에는 오차가 커져요.

아카이나 님이 쓰신 글 :
: 핸드폰에 계산기들을 보면 99999999999999.9-99999999999999.8 을 하면 0.1이 아니라 0.1038 인가 이런식으로
:
: 나오고 있습니다.
:
: 저도 이걸보고 전에 만든 계산기를 동작 해보니까 똑같은 증상을 보이고 있는데요
:
: double형이 잡아먹는 메모리 자리수가 16칸인가? 17칸으로 되있고 역시나 부동소수점 관련해서
:
: 문제 인거 같습니다.
:
: 이걸 고쳐볼려고 몇일을 해봤는데 생각대로 잘 안되고 있습니다 ㅠ.ㅠ
:
: 고수 여러분 도와주세요. . . .
:
:
: 새삼 스럽게 요즘에 와서야 윈도우 계산기의 위대함을 알았습니다  . . .

+ -

관련 글 리스트
61609 double변수 계산기 부동소수점? 관련 문제 질문입니다. 아카이나 1392 2010/06/19
61613     Re:double변수 계산기 부동소수점? 관련 문제 질문입니다. aaa 1930 2010/06/20
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.