자바에서 과학적 이중을 십진수로 변환하려고합니다. X86 (리틀 엔디안) 컴퓨터에서 실행중인 서버 (C++로 코딩 됨)에서 값을 보내고 있으며 클라이언트 (데이터를 자바로 코딩)로 보내기 전에 변환을 위해 htonl, ntohl 메소드를 사용하고있었습니다. 하지만 지금은 LE와 같은 전환없이이 가치를 전달해야합니다. 변환은 클라이언트 (자바) 측에서 수행됩니다. 다른 유형은 올바르게 변환 될 수 있지만 이중에서는 존재하지 않습니다. 클라이언트가 double 유형을 수신하면이 값을 올바르게 읽을 수 없습니다. 다음은 이중 변환을위한 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));
}
위의 모든 단계를 완료 한 후 서버에서 0.3을 보냈다면 9.534475227E-315를 얻었습니다.
감사합니다.
무엇을 찾았나요? 너 무슨 짓을 한거야? 당신이하고 싶은 것을 보여주세요. – tangens
나는 9.534475227E-315와 같은 값을 가지고 있으며이를 0.3으로 변환하고 싶습니다. 왜 0.3입니까? 나는 서버에서 클라이언트로 0.3을 보냈고 클라이언트에서이 값을 읽었을 때 9.534475227E-315 – Aykut
변환 방법에 대한 자세한 정보를 제공해야합니다. – Mark