C++、C中有关double、float类型转换成int型,及取整,丢失精度问题。
2015-09-11 18:41
721 查看
问题:
在C++中,我们会将double、float类型转换成int型,准确的说,将double、float类型取整,会出现以下问题:
代码:
结果为:
原因:
dTemp1是5.00000,但是实际很可能是4.999999,当然截取整数部分,就成了4
解决方法:
将double、float类型转换成CString或者string类型(这个根据你的快发环境而定)然后再转换成int型,这里我以VC6.0中的MFC为列子:
总结:
通过以上的方法就可以解决浮点型数据取整精度丢失问题了,其他的变成语言解决方法也是类似的,我这里也只是提供一种解决方案。
在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);
总结:
通过以上的方法就可以解决浮点型数据取整精度丢失问题了,其他的变成语言解决方法也是类似的,我这里也只是提供一种解决方案。
相关文章推荐
- c语言 函数返回二位数组 函数参数为二维数组
- 猴子分桃
- P2P通信原理与实现(C++)
- [C/C++]_[VS2010使用源代码UTF8中国字符串转码ANSI问题]
- 解析C++编程中的#include和条件编译
- 标准C++中的string类的总结
- 对有向图的环的判定,并且输出图中所有的路径 C++算法
- C++ Regsvr32订购具体解释
- 【C++基金会 06】explictkeyword
- 排序算法总结(C++)
- C++编程笔记 一(函数重载与运算符重载)
- 关于C++编译静态模板成员数据出错 Too few template-parameter-lists
- c++中输入与输出流
- C语言中函数参数入栈的顺序
- c#调用c++的回调函数
- c++ --> cin和cout输入输出格式
- C++ 文件读取
- C语言scanf函数详细解释
- 黑马程序员-----------C语言基础-----------C语言(理论)
- C语言将文件读入内存