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
[71525] 감사합니다. ^^
백꼴통 [] 3239 읽음    2014-07-08 02:11
빌더초보 님이 쓰신 글 :
: double 형의 특성상,
:
: 0.35를 0.3499999999....
:
: 와 같이 순환 소수로 저장하게 됩니다(무한히 순환하는값은 아니지만...)
:
: http://blog.naver.com/dntkrl79/70027308520 를 참고해 보세요.
:
: 좀 복잡해서리 저도 개념만 이해하고 있습니다.
:
:
:
: 따라서 ,
:
: f1/0.05를 계산하면  6.99999... 가 되고,
: 이 상태에서 int로 형변환을 하면 6 이 되기 때문에
: 150000이 나오죠.
:
: 따라서, (int)를 삭제하고 아래와 같이 하면...
:     int nk;
:     double f1;
:     f1 = 0.35;
:     nk =(f1 / 0.05) * 25000;
:
: 답이 제대로 나올 줄 알았는데 174999 가 나오는군요...
: 역시 위와 같은 이유에서라고 생각합니다.
:
: 따라서 반올림을 해주거나,
:     nk = RoundTo((f1 / 0.05) * 25000 , 0);
:
: nk 자체를 double 형으로 선언하면 원하는 답이 나오긴 하는데
:
: 좀 찝찝하죠...
:
:
: 그래서 검색을 좀 해보니...
:
: DoubleToComp 라는 함수가 있군요.
:
:     int nk;
:     Comp cmp;
:     double f1;
:     f1 = 0.35;
:     DoubleToComp((f1 / 0.05) * 25000, cmp);
:     nk=(int)cmp;
:
:
: Comp가 Computational을 의미한다는데...
: 명쾌하게 설명은 못하겠군요 ^-^;;
:
: 도움이 되었기를 바랍니다.
:
:
:
:
:
:
: 백꼴통 님이 쓰신 글 :
: :     int nk;
: :     double f1;
: :
: :
: :     f1 = 0.35;
: :
: :     nk = (int)(f1 / 0.05) * 25000;
: :
: :
: :          결과 nk 값이
: :          175000 이 니와야 하는데.  150000 이됩니다.
: :
: :          어떻게 해야 175000 값이 될 수 있나요..

+ -

관련 글 리스트
71520 소숫점나누기 할때요.. 백꼴통 3059 2014/07/07
71524     Re:소숫점나누기 할때요.. 빌더초보 3616 2014/07/07
71525         감사합니다. ^^ 백꼴통 3239 2014/07/08
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.