我想将科学双数转换为java中的十进制双精度。我发送一个在X86(小端)机器上运行的服务器(用C++编码)的值,并且在将数据发送到客户机(在java上编码)之前,我使用htonl,ntohl方法进行转换。但是现在,我必须发送这个值,而不像LE那样转换为BE。正在客户端(java)端进行覆盖。其他类型可以正确转换,但双重,这是不存在的。当客户端收到双精度型时,该值无法正确读取。这是我的双重转换的Java代码。双重科学记数法在java中的十进制记数法
protected int readInt(InputStream stream) throws IOException {
int i0 = read(stream);
int i1 = read(stream);
int i2 = read(stream);
int i3 = read(stream);
int i=(i0 << 24) + (i1 << 16) + (i2 << 8) + (i3 << 0);
return i;
}
protected double readDouble(InputStream stream) throws IOException {
int i0 = readInt(stream);
int i1 = readInt(stream);
return Double.longBitsToDouble(((long)i0 << 32) + (i1 & 0xffffffffL));
}
经过所有这些步骤,我得到9.534475227E-315,如果我从服务器发送0.3。
感谢和问候。
你发现了什么?你尝试了什么?请举一个你喜欢做什么的例子。 – tangens 2010-02-04 12:26:33
我有一个像9.534475227E-315的值,我想将其转换为0.3。为什么0.3?因为我从服务器发送0.3到客户端,当我从客户端读取这个值时,我得到了9.534475227E-315 – Aykut 2010-02-04 12:29:40
您需要提供更多关于如何尝试转换的信息 – Mark 2010-02-04 12:31:03