float m_count =3.215;//跟踪m_count=3.21500
int aaa=0;
aaa = int(m_count*1000);//a=3214了!!??为啥不是3215
byte m_byte[2];
m_byte[0] = int(m_mincellvol*1000.0)& 0x00ff;//取出低位,10进制142,16进制8E
m_byte[1]= int(m_mincellvol*1000.0)>> 8;//取出高位,10进制12,16进制0C
//高位+低位 0C8E转为10进制 3214,不是3215请问如何才能准确的取出高位和低位?
解决方案 »
- C++ 搜索功能的实现
- 问一个开发工具设置的问题,把VC8 设置成VC6
- 如何实现地图编辑器的分层编辑和显示
- 在CFormView的窗口中添加属性页有点问题!
- CSocket传输文件问题
- dos界面怎么实现?
- 我自己作了一个画点的函数,在视图上画一个点,但我向打印这个点时,点击打印预览时,这个点没有出现,请问我怎样打印这个点?
- 画圆,在2000/xp下编译就能显示,而在98下编译不能显示圆
- 如何获得windows语言类型(英,简体中文,繁体中文...)?
- 请问如何打印list control上的报表
- SPI LSP的问题,为什么LSP没有卸载,重启电脑后就上不去网了?
- VC++操作数据库Access
int(m_count*1000);//a=3214了!!??为啥不是3215 byte m_byte[2];int(m_count*1000 + 0.5); //四舍五入
m_byte[0] = int(m_mincellvol*1000.0)& 0x00ff;//取出低位,10进制142,16进制8E m_byte[1]= int(m_mincellvol*1000.0)>> 8;//取出高位,10进制12,16进制0C //高位+低位 0C8E转为10进制 3214,不是3215
那所有float的数转int都要+0.5吗?
float dTest = 3.215;
CString sTmp;
sTmp.Format(_T("%f"),dTest);
sTmp.TrimRight(_T('0')); int nPos = sTmp.Find(_T('.'));
CString sV1 = sTmp.Left(nPos);
CString sV2 = sTmp.Mid(nPos+1);
能解释下是怎么丢失的1么..?
float有7位有效数字?
3.215就等于用3.214999表示?不过我可以跟踪到3.21500啊
乘1000=3214?
{
int t;
t = (int)_value;
float m;
if ( _value <= 0 ){
m = (float)( t-0.5);
if( _value <= m)
t = t-1;
}else{
m = (float)( t+0.5);
if( _value >= m)
t = t+1;
}
return t;
}