我通过tcp接收数据,数据格式为":ZA3193330350-",经过转换和存储到数据库中,现在有出现一个问题。记录的数据有时会出现好几位小数,入图所示,access的文件里面存储的也是好几位小数。各位帮我分析一下原因!
下面是处理数据的代码
CString strItem = CString(szBuff);//数据存到数据库
//CString strItem = ":ZA3193330350-";
CString strcheck=":Z";
if(strcheck==strItem.Mid(0,2))//接收:Z后才认为正确数据
{ t = CTime::GetCurrentTime();
strTime=t.Format("%Y-%m-%d %H:%M:%S");//获取电脑时间信息  
sprintf(allInfo,"%s(%s)->%s\r\n", inet_ntoa(addrClient.sin_addr),strTime,szBuff);//时间输出格式调整
dlg->SetDlgItemText(IDC_RECEIVE_EDIT,allInfo);CString wendu  = strItem.Mid(3,3);
float wd = atof(wendu)/10;
CString m_wendu;
m_wendu.Format("%.1f", wd);CString shidu = strItem.Mid(6,3);
float sd = atof(shidu)/10;
CString m_shidu;
m_shidu.Format("%.1f", sd);CString co2 = strItem.Mid(9,4);
float co = atof(co2); 
CString m_co2;
m_co2.Format("%.0f",co);CDatabase db;
db.Open(NULL,FALSE,FALSE,"ODBC;DSN=mjx;UID=;PWD=123");
CRecordset rs( &db );
CString sql;
sql.Format("insert into mjx(wendu,shidu,co2,shijian) values ('%f','%f','%f','%s')",wd,sd,co,strTime);//数据存到数据库
db.ExecuteSQL(sql);
rs.Close();
db.Close();//关闭数据库pClientInfo=(struct ClientInfo *)malloc(sizeof(struct ClientInfo));
strcpy(pClientInfo->IP,strTime); //时间
strcpy(pClientInfo->Port,m_wendu);//温度
strcpy(pClientInfo->time,m_shidu);//湿度
strcpy(pClientInfo->co2value,m_co2);//co2值::SendMessage(*AfxGetMainWnd(),WM_USER+1,0,(LPARAM)pClientInfo);//发送消息
}