2012-03-09 5 views
9

¿Existe alguna macro o función para construir un flotante (doble) a partir de un signo, mantisa y exponente (todos binarios o decimales) que devuelve un número flotante válido (doble) o devuelve NaN si el número especificado por la entrada no es representable como flotante (doble)?Macro o función para construir un flotador (doble) a partir de un signo determinado, mantisa y exponente?

+0

No conozco ninguna macro o función estándar, pero sería bastante fácil crear una. Por ejemplo, si su mantisa es un entero con signo, entonces multiplique esto por pow (base, exponente). –

+0

Se sospecha que cualquier operación matemática cambia el resultado, por lo que la representación binaria del resultado no será idéntica a los componentes dados. – mbaitoff

Respuesta

12

La función que está buscando es ldexp.

+2

+1 http://en.cppreference.com/w/cpp/numeric/math/ldexp – 111111

+1

Tenga en cuenta que ldexp (1.0,1024) devuelve inf, y ldexp (1.0, -1075) devolverá 0.0 y ldexp (3.0, -1075) redondeará hacia arriba a ldexp (4.0, -1075) ... No son representables (exactamente) pero no obtendrá un NaN. –

Cuestiones relacionadas