我通过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);//发送消息
}
下面是处理数据的代码
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);//发送消息
}
解决方案 »
- 如何在托盘上添加右键响应菜单,跟帖有分
- 请教 vc++6.0中能否使编程框中字符向下移动几个像素
- 如何将dll文件打包进.exe文件
- 关于论坛的搜索功能,急~~~
- 谁测试过在进程自己内安装消息钩子[不是全局钩子,是自己安装在自己身上的消息钩子],我测试了,不行过滤自己进程的。你们有测试过吗?
- 什么时候用OLECHAR什么时候用BSTR?
- 如何最高效率的对字符串数组赋值?谢谢
- 有谁知道有什么软件可以过滤掉mp3里面歌手的声音只剩下背景音乐??
- 弹出子窗体的问题,为什么总是debug assertion failed?
- 我的工程打开需要花50分钟,请问各位大虾有什么主意能改进一下?
- edit自动换行的困惑
- debug assertion failed 问题
好几位小数 指的是好几个零吗
是因为数据库列设的精度高,这个不影响使用
改为sql.Format("insert into mjx(wendu,shidu,co2,shijian) values ('%.1f','%.1f','%.0f','%s')",wd,sd,co,strTime);