6667086: Double.doubleToLongBits(final double value) contains inefficient test for NaN
Use isNaN() to test the parameter. Reviewed-by: darcy, psandoz
This commit is contained in:
parent
72803ca57e
commit
bfd742becf
@ -833,14 +833,10 @@ public final class Double extends Number implements Comparable<Double> {
|
||||
* @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;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -741,14 +741,10 @@ public final class Float extends Number implements Comparable<Float> {
|
||||
* @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;
|
||||
}
|
||||
|
||||
/**
|
||||
|
Loading…
x
Reference in New Issue
Block a user