In java 6.0, I have below code. double x = 0.0; double y = -10.0; double z = x / y; System.out.println("z = " +z); The result is "-0.0". This is wired, why it is negative zero?

"Morgan Cheng" <> wrote in message news:... > In java 6.0, I have below code. > double x = 0.0; > double y = -10.0; > double z = x / y; > System.out.println("z = " +z); > > The result is "-0.0". This is wired, why it is negative zero? > http://en.wikipedia.org/wiki/−0_(number)

Morgan Cheng wrote: > In java 6.0, I have below code. > double x = 0.0; > double y = -10.0; > double z = x / y; > System.out.println("z = " +z); > > The result is "-0.0". This is wired, why it is negative zero? > I agree that it is weird, but there are reasons why IEEE 754 floating point arithmetic distinguishes positive and negative zero. A zero may be a stand-in for a number of very small absolute magnitude. There are some algorithms where intermediate results overflow and underflow, but the final answer is representable. Preserving the sign on underflow, and through arithmetic using a zero, also preserves the sign on division by the result of the underflow, leading to the correct choice between positive and negative infinity. Patricia

Morgan Cheng <> writes: >The result is "-0.0". This is wired, why it is negative zero? The first result for http://google.to/search?q=negative zero currently is http://en.wikipedia.org/wiki/−0_(number) .

On Sat, 13 Oct 2007 05:06:35 -0700, Morgan Cheng <> wrote, quoted or indirectly quoted someone who said : > >The result is "-0.0". This is wired, why it is negative zero? Because floating point has both a positive and negative 0, signed magnitude, unlike ints. see http://mindprod.com/jgloss/ieee754.html -- Roedy Green Canadian Mind Products The Java Glossary http://mindprod.com