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
[53099] Re:Re:캐스트연산이 불안한 이유...
김시환 [] 1044 읽음    2008-04-14 09:18
전 모든 C++ 컴파일러가 다 그럴거라 예상 했는데 아니었군요...
그런것이 아니었다면 이런문제는 정식으로 제안해서 고쳐야 할 버그가 아닐까요?
개발툴에 있어서  MS 보다 한수 위임을 자처하는 볼랜드에서 이것은 좀....

이 문제 땜에 고생 많이 했습니다. 당연히 문제가 없을 것이라는 생각으로 썼는데 이런 문제가
발생해서 대략 난감 했지요...

이것이 꼭 0.3 만의 문제는 아니고 몇가지 수에서 같은 증상이 나옵니다.
0.3  0.6  0.7  1.2  1.4   공통점이 뭔지 찾아 봤지만 찾지를 못하겠어요...


Lyn 님이 쓰신 글 :
: VC++ 2008 :
:
: int itemp, i2, i3 ;
: double dtemp = 0.3 ;
: itemp = (int) (dtemp * 1000.0) ;           
: i2 = dtemp * 1000.0  ;                   
: dtemp *= 1000 ;
: i3 = dtemp ;            
: printf("%d %d %d", itemp, i2, i3);
:
: 결과 : 300 300 300
:
: C++ BUilder 에서는 299, 299, 300
:
: 컴파일러 차이인듯 ㅡ.ㅡa
:
:
: 나그네 님이 쓰신 글 :
: : int itemp ;
: : double dtemp = 0.3 ;
: :
: : itemp = (int) (dtemp * 1000.0) ;            //  itemp == 299
: : ================================================
: : itemp = dtemp * 1000.0  ;                    //  itemp == 299
: : ================================================
: : dtemp *= 1000 ;
: : itemp = dtemp ;                                   // itemp == 300
: :
: : 이유가 뭘까요?

+ -

관련 글 리스트
53083 캐스트연산이 불안한 이유... 나그네 1089 2008/04/11
53099         Re:Re:캐스트연산이 불안한 이유... 김시환 1044 2008/04/14
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.