Hi, I compiled and run this code. It seems that 100.0/-0 s positive and 100.0/-0.0 is negative. So there is a negative zero for doubles but not for ints?. Is there any explanation for this? <pre> public class A1{ public static void main(String [] buff){ //double d = 100.0/-0.0; // outputs negative infinity double d = 100.0/-0; // outputs positive infinity if(d == Double.NEGATIVE_INFINITY){ System.out.println("NEGATIVE_INFINITY"); }else{ System.out.println("POSITIVE_INFINITY"); } } } </pre> Thank you very much
Bala Arul
Greenhorn
Joined: Feb 09, 2001
Posts: 29
posted
0
Hi, As an integer -0's binary representation is as same as 0, by taking 2's compliment. B Arul.
huiying li
Ranch Hand
Joined: Feb 12, 2001
Posts: 68
posted
0
You are correct and here is a quote from Java language specification. http://java.sun.com/docs/books/jls/second_edition/html/typesValues.doc.html#9208 "Positive zero and negative zero compare equal; thus the result of the expression 0.0==-0.0 is true and the result of 0.0>-0.0 is false. But other operations can distinguish positive and negative zero; for example, 1.0/0.0 has the value positive infinity, while the value of 1.0/-0.0 is negative infinity." You should also read the API documentation for Double class method equal(). Hope this helps.