读书人

float、int 类型转换解决方法

发布时间: 2012-10-09 10:21:45 作者: rapoo

float、int 类型转换
int x=0x7FFFFFFF;
请详细描述(float)x的过程(精度丢失)。
注意float使用32位IEEE格式。
使用IEEE格式,int最大能表示的数是多少,转换时才能不丢失精度?

[解决办法]
不好意思,忘记float默认第一位是1了,所以应该是2的24次方,即最大为16777215。
当大于16777215时如果数据后X位(X为移位的位数)不全是0,则出现精度丢失。

C/C++ code
    int a = 16777215;    float b = a;    int c = b;    cout<<c<<endl;    a = 16777217;    b = a;    c = b;    cout<<c<<endl; 

读书人网 >C语言

热点推荐