From 7303114564f7b0dae39ef5bc1873dfed08ce91b2 Mon Sep 17 00:00:00 2001 From: darcy Date: Fri, 23 Jan 2009 10:37:41 -0800 Subject: [PATCH] 6604864: Double.valueOf(String) does not specify behaviour for overflow and underflow Reviewed-by: emcmanus --- src/share/classes/java/lang/Double.java | 17 ++++++++++++++--- src/share/classes/java/lang/Float.java | 17 ++++++++++++++--- 2 files changed, 28 insertions(+), 6 deletions(-) diff --git a/src/share/classes/java/lang/Double.java b/src/share/classes/java/lang/Double.java index 852d27dcc..9866d5d4a 100644 --- a/src/share/classes/java/lang/Double.java +++ b/src/share/classes/java/lang/Double.java @@ -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 @@ public final class Double extends Number implements Comparable { * 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. * *

To interpret localized string representations of a * floating-point value, use subclasses of {@link diff --git a/src/share/classes/java/lang/Float.java b/src/share/classes/java/lang/Float.java index b8b6a1afc..1c89a458f 100644 --- a/src/share/classes/java/lang/Float.java +++ b/src/share/classes/java/lang/Float.java @@ -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 @@ public final class Float extends Number implements Comparable { * 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. * *

To interpret localized string representations of a * floating-point value, use subclasses of {@link -- GitLab