|
{
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)연산으로 저장하는 구조 입니다.
|