Float.IntBitsToFloat(Int32) Method
Definition
Important
Some information relates to prerelease product that may be substantially modified before it’s released. Microsoft makes no warranties, express or implied, with respect to the information provided here.
Returns the float
value corresponding to a given
bit representation.
[Android.Runtime.Register("intBitsToFloat", "(I)F", "")]
public static float IntBitsToFloat (int bits);
[<Android.Runtime.Register("intBitsToFloat", "(I)F", "")>]
static member IntBitsToFloat : int -> single
Parameters
- bits
- Int32
an integer.
Returns
the float
floating-point value with the same bit
pattern.
- Attributes
Remarks
Returns the float
value corresponding to a given bit representation. The argument is considered to be a representation of a floating-point value according to the IEEE 754 floating-point "single format" bit layout.
If the argument is 0x7f800000
, the result is positive infinity.
If the argument is 0xff800000
, the result is negative infinity.
If the argument is any value in the range 0x7f800001
through 0x7fffffff
or in the range 0xff800001
through 0xffffffff
, the result is a NaN. No IEEE 754 floating-point operation provided by Java can distinguish between two NaN values of the same type with different bit patterns. Distinct values of NaN are only distinguishable by use of the Float.floatToRawIntBits
method.
In all other cases, let s, e, and m be three values that can be computed from the argument:
<blockquote>
{@code
int s = ((bits >> 31) == 0) ? 1 : -1;
int e = ((bits >> 23) & 0xff);
int m = (e == 0) ?
(bits & 0x7fffff) << 1 :
(bits & 0x7fffff) | 0x800000;
}
</blockquote>
Then the floating-point result equals the value of the mathematical expression s·m·2<sup>e-150</sup>.
Note that this method may not be able to return a float
NaN with exactly same bit pattern as the int
argument. IEEE 754 distinguishes between two kinds of NaNs, quiet NaNs and signaling NaNs. The differences between the two kinds of NaN are generally not visible in Java. Arithmetic operations on signaling NaNs turn them into quiet NaNs with a different, but often similar, bit pattern. However, on some processors merely copying a signaling NaN also performs that conversion. In particular, copying a signaling NaN to return it to the calling method may perform this conversion. So intBitsToFloat
may not be able to return a float
with a signaling NaN bit pattern. Consequently, for some int
values, floatToRawIntBits(intBitsToFloat(start))
may not equal start
. Moreover, which particular bit patterns represent signaling NaNs is platform dependent; although all NaN bit patterns, quiet or signaling, must be in the NaN range identified above.
Java documentation for java.lang.Float.intBitsToFloat(int)
.
Portions of this page are modifications based on work created and shared by the Android Open Source Project and used according to terms described in the Creative Commons 2.5 Attribution License.