关于c中 int, float, double转换中存在的精度损失问题
2014-05-20 14:30
357 查看
先看一段代码实验:
从这个例子中可以看出flag1和flag2均为flase,且虽然d2和d在输出的时候虽然看上去一致,但实际并不相等;而i与j的实际值就已经查了很远。具体原因参见参考文献[1]。
深层原理分析还需进一步学习中。 。。。。待补充。
Reference
[1]int, float, double之间不得不说的故事, /article/5800291.html
#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
相关文章推荐
- 经得起雷劈:关于double和int/long相互转换失去精度计算错误的问题
- 经得起雷劈:关于double和int/long相互转换失去精度计算错误的问题
- 关于float和double丢失精度问题及解决方案
- 关于双精度与单精度double,float小数尾数的问题
- 关于float和double的精度问题
- float和double丢失精度问题,可用Long来转换
- double 转 int 的精度损失问题
- 关于float、double结果精度的问题
- 关于C++中string对象向int、float、double类型的转换的方法汇总
- 关于float与double的精度问题
- float,double,decimal彼此转换会出现的精度问题(今天你Bug了吗?)
- float和double丢失精度问题,可用Long来转换
- 关于float, double的精度问题
- C++、C中有关double、float类型转换成int型,及取整,丢失精度问题。
- 关于PHP官网的float转int精度问题
- 关于double/float运算精度问题
- double 和 int 转换 时的精度问题
- 疑问系列 sscanf,sprintf ,double转换成int时损失问题
- 关于java中float和int 精度和范围的问题
- 关于int数据转换float数据出现输出0.0000的问题