Skip to main content

NaN Not a Number puzzle in java

Question ?

What is the output of below code?


public class BridgeOfLooper
{
  public static void main(String[] args)
  {
    double d = 0.0/ 0.0;
    System.out.println( d - 1 == 0);
  }

}

o/p => false

Some might have thought about 'ArithmeticException :Divide by Zero'

Remember that 0.0 is NaN not a Zero.


Explanation : 

  double d = 0.0 / 0.0 Arithmetic expression evaluates to infinity 
  so d becomes NaN
     d = NaN
  
  TechFacts Any floating point operation evaluates to NaN if one or more 
  of its operands are NaN.

  The rules for computing with NaN is that once it generates NaN, a computation is damaged, and no further computation can repair the damage.

   d -1 = NaN which is not equal to 0

Comments

Popular posts from this blog

Intersection of exception in class or interface hierarchy

Question? Q1. Will below program compile? public class ExceptionTestForInterface implements Type3 {   public void f()   {     System. out .println( "Hello World" );   }      public static void main(String[] args )   {     Type3 type = new ExceptionTestForInterface();     type .f();   } } interface Type1 {   void f() throws CloneNotSupportedException; } interface Type2 {      void f() throws InterruptedException;    } interface Type3 extends Type1, Type2{    } Ans => Yes, It will compile and successfully print the "Hello World" Remember The set of checked exceptions that a method can throw is the intersection of the sets of checked exceptions that it is declared to throw in all applicable types.

Method overloading parameter as float, double and wrapper.

Question?  What is the output of below code ?   Other question  will it be compile ? will there be an error at runtime for ambiguity?     public   class  RedHatQuestion {    public   void  printData( float   f )   {     System. out .println( "inside float" );   }       public   void  printData( double   d )   {     System. out .println( "inside double " );   }       public   void  printData(Double  d )   {     System. out .println( "Inside object double" );   }       public   static   void  main(String[]  args ) {     RedHatQuestion  question  =  new  RedHatQuestion();      question .printData(3.1415)...