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;