int a=10/0;

if i want to perform it then there will be a run time error. it is fine.

but in

double a=10/0.0 there will not be any run time error and the answer will be infinity. why?

please look at another problem

int x=012;

if ( x==10) { System.out.println("if part"); }

else{System.out.println("else part");}

it is printing "if part" why?

Originally posted by ritwik roy:

plz look at the code

int a=10/0;

if i want to perform it then there will be a run time error. it is fine.

but in

double a=10/0.0 there will not be any run time error and the answer will be infinity. why?

please look at another problem

int x=012;

if ( x==10) { System.out.println("if part"); }

else{System.out.println("else part");}

it is printing "if part" why?

A java.lang.ArithmeticException will be thrown if there is an integer division by zero. However,

- a positive float/double division by zero will result in

a POSITIVE_INFINITY

- a negative float/double division by zero will result in

a NEGATIVE_INFINITY

In you example, 10 will be promoted to float so the result is infinity.

Hope this helps...

Infinity is a special constant value :-

- any positive number divide 0.0 is Infinity.

- any negative number divide 0.0 is -Infinity.

- 0/0.0 is NaN

SCJA 1.0, SCJP 1.4, SCWCD 1.4, SCBCD 1.3, SCJP 5.0, SCEA 5, SCBCD 5; OCUP - Fundamental, Intermediate and Advanced; IBM Certified Solution Designer - OOAD, vUML 2; SpringSource Certified Spring Professional

int a=10/0;

if i want to perform it then there will be a run time error. it is fine.

but in

double a=10/0.0 there will not be any run time error and the answer will be infinity. why?

please look at another problem

int x=012;

if ( x==10) { System.out.println("if part"); }

else{System.out.println("else part");}

it is printing "if part" why?

In the expresion a=10/0.0 denominator is a double, So 10 is also promoted to double and the overloaded division operator for double is invoked. / operator for double returns Double.Infinity when denominator is 0.0.

interger literals that start with 0 are interpreted as octal values. So decimal equalent of 012 will be 2+8 ie 10.

integer values that start with 0x are interpreted as hexadecimal values.

Hope I have answered your queries.

Try executing a= 10/-0.0;

Thanks

Shyam Ramineni

<a href="http://hyderabaditeducation.com" target="_blank" rel="nofollow">http://hyderabaditeducation.com</a>

Don't get me started about those stupid light bulbs. |