您的位置:首页 > 其它

关于c中 int, float, double转换中存在的精度损失问题

2014-05-20 14:30 357 查看
先看一段代码实验:

#include<limits>
#include<iostream>

using namespace std;

int main()
{
unsigned int i = numeric_limits<unsigned int >::max();
float f = i;
unsigned int j = (unsigned int )f;
bool flag 1 = i==j;
cout<<"i = "<<endl;
cout<<"j = "<<endl;
cout<<"flag1 = " <<flag1<<endl;

 double d = 0.6L; // change this value  to 0.5L, you will see different result
   float e = (float)d;
double d2 = e;
bool flag2 = d==d2;
cout<<"d2: "<<d2<<endl;
cout<<"d: "<<d<<endl;
cout<<"flag2: "<<flag2<<endl;

}


从这个例子中可以看出flag1和flag2均为flase,且虽然d2和d在输出的时候虽然看上去一致,但实际并不相等;而i与j的实际值就已经查了很远。具体原因参见参考文献[1]。

深层原理分析还需进一步学习中。 。。。。待补充。

Reference

[1]int, float, double之间不得不说的故事, /article/5800291.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: