# The sign of zero

Mafalda Alabort

Greenhorn

Posts: 24

posted 15 years ago

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

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

Posts: 29

huiying li

Ranch Hand

Posts: 68

posted 15 years ago

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.

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.

SCJP