diff --git a/jdk/src/share/classes/java/lang/Double.java b/jdk/src/share/classes/java/lang/Double.java index 690ca6a8dc3..9ba150e7156 100644 --- a/jdk/src/share/classes/java/lang/Double.java +++ b/jdk/src/share/classes/java/lang/Double.java @@ -833,14 +833,10 @@ public final class Double extends Number implements Comparable { * @return the bits that represent the floating-point number. */ public static long doubleToLongBits(double value) { - long result = doubleToRawLongBits(value); - // Check for NaN based on values of bit fields, maximum - // exponent and nonzero significand. - if ( ((result & DoubleConsts.EXP_BIT_MASK) == - DoubleConsts.EXP_BIT_MASK) && - (result & DoubleConsts.SIGNIF_BIT_MASK) != 0L) - result = 0x7ff8000000000000L; - return result; + if (!isNaN(value)) { + return doubleToRawLongBits(value); + } + return 0x7ff8000000000000L; } /** diff --git a/jdk/src/share/classes/java/lang/Float.java b/jdk/src/share/classes/java/lang/Float.java index 5cc28f99bff..17d2cd7d206 100644 --- a/jdk/src/share/classes/java/lang/Float.java +++ b/jdk/src/share/classes/java/lang/Float.java @@ -741,14 +741,10 @@ public final class Float extends Number implements Comparable { * @return the bits that represent the floating-point number. */ public static int floatToIntBits(float value) { - int result = floatToRawIntBits(value); - // Check for NaN based on values of bit fields, maximum - // exponent and nonzero significand. - if ( ((result & FloatConsts.EXP_BIT_MASK) == - FloatConsts.EXP_BIT_MASK) && - (result & FloatConsts.SIGNIF_BIT_MASK) != 0) - result = 0x7fc00000; - return result; + if (!isNaN(value)) { + return floatToRawIntBits(value); + } + return 0x7fc00000; } /**