|
short 는 정수만 가능합니다.
실수를 정수 변수에 넣으면 자동으로 소수 부분은 짤립니다.
type을 float 이나 double로 변경해서 해보세요.
double dTemp = ((double)temp / 100.0) - 100;
Rkluv 님이 쓰신 글 :
: 안녕하세요 빌더 초보 개발자 입니다.
:
: static short tpv; //전역으로 선언
:
: ------------------------------------------------
: void __fastcall TForm1::Chamberdata(void)
: {
: AnsiString CMD;
: short temp;
: CMD.sprintf("%c%s%c%c%c",2, "002RCV", 3, 0x0D, 0x0A); //303032524356
:
: WriteCmd2(CMD);
: Read2();
: sMemo3->Lines->Add(sResult2);
: temp = 0x00FF & sResult2.c_str()[13];
: temp <<= 8;
: temp = temp | sResult2.c_str()[14];
: temp 값이 13006 이 나왔습니다.
:
: tpv = (temp / 100) - 100; 연산해주는데 tpv의 값이 30만 들어옵니다. 실제적으로 30.06이 들어와야 하는데 말이죠...
:
:
: }
:
:
|