It turns out that you’ll never know as Double.valueOf(...) or Double.parseDouble(...) will throw a NumberFormatException exception if you try to do something like:
Double.valueOf("test");
…so although the string “test” is not a number, it’ll never be Double.NaN.
Double.NaN is in fact defining a few very specific mathematical cases, with the most obvious one being the divisions 0/0 and ±∞/±∞ For a complete list take a look at wikipedia.
/** Definition of Not a Number */
public static final double NAN = 0.0d / 0.0;
public static void main(String[] args) {
// This will print false
boolean test = Double.isNaN(2.2);
System.out.println("isNaN Test Result: " + test);
// This will print true
test = Double.isNaN(NAN);
System.out.println("isNaN Test Result: " + test);
// A Double.NaN + a double remains as Double.NaN
Double d = Double.NaN + 1.0;
System.out.println(d);
// This will throw a NumberFormatException
Double invalid = Double.valueOf("test");
System.out.println("This is invalid: " + invalid);
}
No comments:
Post a comment