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
[59481] [질문] 나누기 연산중 생긴 문제..
이성진 [cyberain] 1061 읽음    2009-12-18 18:25
{
    String  strTmp;
    double  dbTmp;
    int     nTmp1;
    int     nTmp2;
    dbTmp   = log(128) / log(2);
    nTmp1   = (int)(dbTmp);
    nTmp2   = (int)(log(128) / log(2));
    strTmp.sprintf("TmpDb[%f] Tmp1[%d], Tmp2[%d]",dbTmp, nTmp1, nTmp2);
    ShowMessage(strTmp);
}
결과 "TmpDb[7.000] Tmp1[7] Tmp2[6]"

나누기 연산중 값이 Tmp1[7] Tmp2[6]가 달라지는 현상이 발생하네요..
같은코드를 MFC로 컴파일 했더니 Tmp1[7] Tmp2[7] 컴파일러 버그인 걸까요?

xxx.ini에서 읽은 각 BIT POS를 가지고 있다 저장해도 될터인데..
for문을 돌린다거나 해서 현재 BIT POS를 찾아내도 될터인데..
그래도 조금 더 간단한 방법은 없을까요 ?

일단 하는 일은
1. xxx.ini 에서 비트 설정을 읽어서
  [IN]
  START=x
  END=x
2. m_maskIn구조체에 저장을 하고..
  m_maskIn.nStart = pow(2, START_BIT_POS);
3. 프로그램 내부에서 m_maskIn을 사용하다 UI조작으로
  m_maskIn의 값들을 log(m_maskIn.nStart) / log(2.0)연산으로 저장하는 구조 입니다.

+ -

관련 글 리스트
59481 [질문] 나누기 연산중 생긴 문제.. 이성진 1061 2009/12/18
59510     Re:[질문] 나누기 연산중 생긴 문제.. nansama 1082 2009/12/22
59513         Re:Re:[질문] 나누기 연산중 생긴 문제.. 이성진 1291 2009/12/22
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.