[问题]一个比较郁闷的编程问题,求救[解决了]

陪你去看龙卷风

新手上路
VIP
注册
2002-10-12
消息
11,271
荣誉分数
61
声望点数
0
代码:
#include <iostream.h>
#include <fstream.h>
 
struct Vector
{ 
    float x; 
    float y; 
    float z; 
};  

void main() 
{ 
	char FILE[] = "output.dat";
	Vector myVector;
	myVector.x = 106504.80f;
	myVector.y = 2822.24f;
	myVector.z = -3282.62f;
	ofstream fout(FILE); 
	fout.write(reinterpret_cast<char *>(&myVector),sizeof(myVector));  
	fout.close();

	Vector aVector;
	ifstream fin(FILE);
	fin.read(reinterpret_cast<char *>(&aVector.x), sizeof(aVector.x));
	cout << aVector.x <<endl;
	fin.read(reinterpret_cast<char *>(&aVector.y), sizeof(aVector.y));
	cout << aVector.y <<endl;
	fin.read(reinterpret_cast<char *>(&aVector.y), sizeof(aVector.z));
	cout << aVector.z <<endl;
	fin.close();
}

有哪位知道为啥输出结果是
106505
2822.24
-1.07374e+008
而不是
106504.80
2822.24
-3282.62
 
代码:
public int ParseInt(int val){
	int returnInt = 0, a, b, c, d;
	a = ((val &~ 0x00ffffff) >> 24) &~ 0xffffff00;
	b = (val &~ 0xff00ffff) >> 8;
	c = (val &~ 0xffff00ff) << 8;
	d = (val &~ 0xffffff00) << 24;
	returnInt = a|b|c|d;
	return returnInt;
}
System.out.println(Float.intBitsToFloat(ParseInt(dis.readInt())));
 
哎,丢人了-。-

不过似乎float还是会around up
那个106504.80

106505
2822.24
-3282.62
 
后退
顶部