您的位置:首页 > 编程语言 > C语言/C++

C++、C中有关double、float类型转换成int型,及取整,丢失精度问题。

2015-09-11 18:41 721 查看
问题:

在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);


总结:

通过以上的方法就可以解决浮点型数据取整精度丢失问题了,其他的变成语言解决方法也是类似的,我这里也只是提供一种解决方案。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: