Pregunta

Que yo sepa los valores de punto flotante son de la forma n * 2^e, con

  • rango flotante n = -(2^23-1) - (2^23-1), y e = -126 - 127,
  • doble rango de n = -(2^52-1) - (2^52-1), y e = -1022 - 1023

Yo estaba mirando a través del estándar de C++, pero no pudo encontrar el lugar donde el estándar especifica este, o los mandatos de la asociación de los float, double y long double tipos con los rangos definidos en otros (IEEE) de las normas.La única relacionados cosa que he encontrado en la 3.9.1.8 es:

Hay tres tipos de punto flotante:float, double y long double.El tipo de doble proporciona al menos tanta precisión como float, y el tipo long double proporciona al menos tanta precisión como doble.El conjunto de valores de tipo float es un subconjunto del conjunto de valores de tipo double;el conjunto de valores de tipo double es un subconjunto del conjunto de valores de tipo long double.El valor de la representación de los tipos de punto flotante es de aplicación definido.

Y no se menciona el rango mínimo proporcionado por el tipo.

Dónde/cómo funciona el estándar especifica el mínimo (?) el rango de valor de los tipos de punto flotante?O puede que un compilador de elegir libremente cualquier rango de valor y aún así ser conformes a las normas?

¿Fue útil?

Solución

Como entero numberic límites, los límites para float, double y long double son importados de la C estándar.El valor mínimo para las constantes FLT_MAX, DBL_MAX y LDBL_MAX es 1E+37.Por su *_MIN variantes el valor máximo es 1E-37.

Otros consejos

Lo que ha citado es todo lo que garantiza los tipos de coma flotante en C ++. Como dice, su representación está definida por la implementación.

Sin embargo, puede consultar información sobre los límites y si los tipos son tipos especificados por IEC 559 (IEEE 754) utilizando las plantillas std::numeric_limits en <limits>.

El estándar no especifica tales cosas porque a menudo dependen del hardware y cambian con el tiempo. Si bien hoy en día 32 bits se consideran un estándar, en 10 años hacer cosas en menos de 64 bits puede parecer desagradable.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top