Solved

Double.NaN != Double.NaN

Posted on 2007-11-28
5
1,538 Views
Last Modified: 2008-09-16
The code below does not enter the 'then'...why?

double d = Double.NaN;
if (d == Double.NaN) {
  System.out.println ("Does not get here");
}
0
Comment
Question by:allelopath
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 2
  • 2
5 Comments
 
LVL 92

Accepted Solution

by:
objects earned 500 total points
ID: 20369844
should use:

if (Double.isNaN(d)) {
0
 
LVL 92

Expert Comment

by:objects
ID: 20369872
Equality comparison between two NaN numbers is always false.
0
 
LVL 7

Expert Comment

by:UrosVidojevic
ID: 20369900
When comparing two Double.NaN values, == operator always gives false.

You can use equals function which Double class inherited from Object class:

public boolean equals(Object obj)

    Compares this object against the specified object. The result is true if and only if the argument is not null and is a Double object that represents a double that has the identical bit pattern to the bit pattern of the double represented by this object. For this purpose, two double values are considered to be the same if and only if the method doubleToLongBits(double) returns the same long value when applied to each.

    Note that in most cases, for two instances of class Double, d1 and d2, the value of d1.equals(d2) is true if and only if

           d1.doubleValue() == d2.doubleValue()
         

    also has the value true. However, there are two exceptions:

        * If d1 and d2 both represent Double.NaN, then the equals method returns true, even though Double.NaN==Double.NaN has the value false.
        * If d1 represents +0.0 while d2 represents -0.0, or vice versa, the equal test has the value false, even though +0.0==-0.0 has the value true. This allows hashtables to operate properly.

    Overrides:
        equals in class Object

    Parameters:
        obj - the object to compare with.
    Returns:
        true if the objects are the same; false otherwis
0
 
LVL 1

Author Comment

by:allelopath
ID: 20369918
UrosVidojevic:
Thanks for all the info. I guess I accepted objects answer while you were typing. Sorry.
0
 
LVL 7

Expert Comment

by:UrosVidojevic
ID: 20369976
It's OK. You are given the right answer, that is important. :-)
0

Featured Post

SharePoint Admin?

Enable Your Employees To Focus On The Core With Intuitive Onscreen Guidance That is With You At The Moment of Need.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Title # Comments Views Activity
Is Applet the way to go for my drag and drop system? 8 51
Eclipse for Java EE development 2 68
learn programming 8 94
passing enum to a method 4 48
For beginner Java programmers or at least those new to the Eclipse IDE, the following tutorial will show some (four) ways in which you can import your Java projects to your Eclipse workbench. Introduction While learning Java can be done with…
In this post we will learn how to make Android Gesture Tutorial and give different functionality whenever a user Touch or Scroll android screen.
Viewers learn about the third conditional statement “else if” and use it in an example program. Then additional information about conditional statements is provided, covering the topic thoroughly. Viewers learn about the third conditional statement …
Viewers will learn about the regular for loop in Java and how to use it. Definition: Break the for loop down into 3 parts: Syntax when using for loops: Example using a for loop:
Suggested Courses

734 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question