12 double significant = std::frexp(value , &integerExponent);
14 const int shiftExponent = std::numeric_limits<T>::digits-1;
15 const double shiftMantissa = std::pow( 2.0,shiftExponent );
17 if (integerExponent-shiftExponent <= std::numeric_limits<char>::min()) {
22 exponent =
static_cast<char>( integerExponent-shiftExponent );
23 mantissa =
static_cast<T
>( std::round(significant*shiftMantissa) );