6604864: Double.valueOf(String) does not specify behaviour for overflow and underflow
authordarcy
Fri, 23 Jan 2009 10:37:41 -0800
changeset 1824 7a685390c6ab
parent 1823 23d42a96635e
child 1825 9ac11db6b69b
6604864: Double.valueOf(String) does not specify behaviour for overflow and underflow Reviewed-by: emcmanus
jdk/src/share/classes/java/lang/Double.java
jdk/src/share/classes/java/lang/Float.java
--- a/jdk/src/share/classes/java/lang/Double.java	Thu Jan 22 20:29:54 2009 -0800
+++ b/jdk/src/share/classes/java/lang/Double.java	Fri Jan 23 10:37:41 2009 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright 1994-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1994-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -404,8 +404,19 @@
      * binary value that is then rounded to type {@code double}
      * by the usual round-to-nearest rule of IEEE 754 floating-point
      * arithmetic, which includes preserving the sign of a zero
-     * value. Finally, a {@code Double} object representing this
-     * {@code double} value is returned.
+     * value.
+     *
+     * Note that the round-to-nearest rule also implies overflow and
+     * underflow behaviour; if the exact value of {@code s} is large
+     * enough in magnitude (greater than or equal to ({@link
+     * #MAX_VALUE} + {@link Math#ulp(double) ulp(MAX_VALUE)}/2),
+     * rounding to {@code double} will result in an infinity and if the
+     * exact value of {@code s} is small enough in magnitude (less
+     * than or equal to {@link #MIN_VALUE}/2), rounding to float will
+     * result in a zero.
+     *
+     * Finally, after rounding a {@code Double} object representing
+     * this {@code double} value is returned.
      *
      * <p> To interpret localized string representations of a
      * floating-point value, use subclasses of {@link
--- a/jdk/src/share/classes/java/lang/Float.java	Thu Jan 22 20:29:54 2009 -0800
+++ b/jdk/src/share/classes/java/lang/Float.java	Fri Jan 23 10:37:41 2009 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright 1994-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1994-2009 Sun Microsystems, Inc.  All Rights Reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -365,8 +365,19 @@
      * binary value that is then rounded to type {@code float}
      * by the usual round-to-nearest rule of IEEE 754 floating-point
      * arithmetic, which includes preserving the sign of a zero
-     * value. Finally, a {@code Float} object representing this
-     * {@code float} value is returned.
+     * value.
+     *
+     * Note that the round-to-nearest rule also implies overflow and
+     * underflow behaviour; if the exact value of {@code s} is large
+     * enough in magnitude (greater than or equal to ({@link
+     * #MAX_VALUE} + {@link Math#ulp(float) ulp(MAX_VALUE)}/2),
+     * rounding to {@code float} will result in an infinity and if the
+     * exact value of {@code s} is small enough in magnitude (less
+     * than or equal to {@link #MIN_VALUE}/2), rounding to float will
+     * result in a zero.
+     *
+     * Finally, after rounding a {@code Float} object representing
+     * this {@code float} value is returned.
      *
      * <p>To interpret localized string representations of a
      * floating-point value, use subclasses of {@link