问题:
在C++中,我们会将double、float类型转换成int型,准确的说,将double、float类型取整,会出现以下问题:
代码:
double dTemp1=1.0000;
double dTemp2=5.0000;
int iTemp1=(int)dTemp1;
int iTemp2=(int)dTemp2;
结果为:
iTemp1=0;
iTemp2=4;
原因:
dTemp1是5.00000,但是实际很可能是4.999999,当然截取整数部分,就成了4
解决方法:
将double、float类型转换成CString或者string类型(这个根据你的快发环境而定)然后再转换成int型,这里我以VC6.0中的MFC为列子:
double dTemp1=4.0000;
CString sTemp=_T("");
sDivisor.Format(_T("%0.4f"),dTemp1);
int iTemp1=atoi(sTemp);
总结:
通过以上的方法就可以解决浮点型数据取整精度丢失问题了,其他的变成语言解决方法也是类似的,我这里也只是提供一种解决方案。