cocos2d/cocos/audio/android/audio_utils/include/audio_utils/primitives.h
static inline float float_from_q4_27(int32_t ival)
{
    /* The scale factor is the reciprocal of the fractional bits.
     *
     * Since the scale factor is a power of 2, the scaling is exact, and there
     * is no rounding due to the multiplication - the bit pattern is preserved.
     * However, there may be rounding due to the fixed-point to float conversion,
     * as described above.
     */
    static const float scale = 1. / (float)(1UL << 27);

    return ival * scale;
}
/* Convert a signed fixed-point 32-bit Q4.27 value to single-precision floating-point.
 * The nominal output float range is [-1.0, 1.0] if the fixed-point range is
 * [0xf8000000, 0x07ffffff].  The full float range is [-16.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 a signed fixed-point 32-bit Q4.27 value to single-precision floating-point.
The nominal output float range is [-1.0, 1.0] if the fixed-point range is
[0xf8000000, 0x07ffffff].

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 a signed fixed - point 32 - bit Q4 . 27 value to single - precision floating - point . The nominal output float range is [ - 1 . 0 1 . 0 ] if the fixed - point range is [ 0xf8000000 0x07ffffff ] . 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_q4_27(int32_t ival)
{
    static const float scale = 1. / (float)(1UL << 27);
    return ival * scale;
}
static inline float float_from_q4_27 ( int32_t ival ) { static const float scale = 1. / ( float ) ( 1UL << 27 ) ; return ival * scale ; }
Convert a signed fixed-point 32-bit Q4.27 value to single-precision floating-point.
Convert a signed fixed - point 32 - bit Q4 . 27 value to single - precision floating - point .
/* The scale factor is the reciprocal of the fractional bits.
     *
     * Since the scale factor is a power of 2, the scaling is exact, and there
     * is no rounding due to the multiplication - the bit pattern is preserved.
     * However, there may be rounding due to the fixed-point to float conversion,
     * as described above.
     */