cocos2d/cocos/audio/android/audio_utils/include/audio_utils/primitives.h
static inline float float_from_u4_28(uint32_t uval)
{
    static const float scale = 1. / (float)(1UL << 28);

    return uval * scale;
}
/* Convert an unsigned fixed-point 32-bit U4.28 value to single-precision floating-point.
 * The nominal output float range is [0.0, 1.0] if the fixed-point range is
 * [0x00000000, 0x10000000].  The full float range is [0.0, 16.0].
 *
 * Note the closed range at 1.0 and 16.0 is due to rounding on conversion to float.
 * In more detail: if the fixed-point integer exceeds 24 bit significand of single
 * precision floating point, the 0.5 lsb in the significand conversion will round
 * towards even, as per IEEE 754 default.
 */
Convert an unsigned fixed-point 32-bit U4.28 value to single-precision floating-point.

Note the closed range at 1.0 and 16.0 is due to rounding on conversion to float.
In more detail: if the fixed-point integer exceeds 24 bit significand of single
precision floating point, the 0.5 lsb in the significand conversion will round
towards even, as per IEEE 754 default.
Convert an unsigned fixed - point 32 - bit U4 . 28 value to single - precision floating - point . Note the closed range at 1 . 0 and 16 . 0 is due to rounding on conversion to float . In more detail : if the fixed - point integer exceeds 24 bit significand of single precision floating point the 0 . 5 lsb in the significand conversion will round towards even as per IEEE 754 default .
static inline float float_from_u4_28(uint32_t uval)
{
    static const float scale = 1. / (float)(1UL << 28);
    return uval * scale;
}
static inline float float_from_u4_28 ( uint32_t uval ) { static const float scale = 1. / ( float ) ( 1UL << 28 ) ; return uval * scale ; }
Convert an unsigned fixed-point 32-bit U4.28 value to single-precision floating-point.
Convert an unsigned fixed - point 32 - bit U4 . 28 value to single - precision floating - point .