Constantes fraccionarias (Informática)

(Redirigido desde «Constantes fraccionarias»)
Constantes fraccionarias (Informática)
Información sobre la plantilla
Concepto:Corresponden al concepto matemático de números fraccionarios

Constantes fraccionarias (Informática). También llamada "de punto flotante" corresponden al concepto matemático de números fraccionarios. Es decir, cantidades con cierto número de cifras decimales. Su representación en el código fuente puede contener:

  • Parte entera 37.092e-2L
  • Punto decimal 37.092e-2L
  • Parte fraccionaria 37.092e-2L
  • e/E y un entero con signo (exponente) 37.092e-2L.
  • Sufijo (indicador de tipo): f/F ó l/L 37.092e-2L

Pueden omitirse la parte entera o la decimal (pero no ambas); pueden omitirse el punto decimal y la letra E (e), y el exponente (pero no ambos). Las constantes fraccionarias negativas se forman igual que las positivas, pero precediéndolas con el operador unitario menos ( - ).

Posibles notaciones

Las reglas anteriores permiten utilizar para las constantes fraccionarias dos tipos de notación:

  • Notación convencional (de punto decimal)
  • Notación científica (con exponente E/e)

Ejemplos:

Expresión Valor

  • 23.45e6 23.45 10^6
  • .0 0
  • 0. 0.0
  • 1. 1.0
  • -1.23 -1.23
  • 2e-5 2.0 10^-5
  • 3E+10 3.0 10^10
  • .09E34 0.09 10^34

Nota: la notación 10^-5 significa 10 elevado a menos 5 ( 10-5 ).

En ausencia de cualquier sufijo, las constantes fraccionarias se consideran de tipo double, aunque se puede obligar a que sea considerada de tipo float añadiéndole el sufijo f ó F. Ejemplo:

  • x = 1.; // L.1:
  • y = 1.f; // L.2:

En L.1 la constante 1.0 es considerada double, y podría producir una advertencia del compilador: Warning: Initialización to 'int' from 'double'. L.2 produciría: Warning: Initialización to 'int' from 'float'. La razón es que, por tradición del C, en ausencia de una declaración explícita de tipo, en expresiones como L.1 y L.2, el compilador C++ supone que x e y son tipo int.

De forma análoga, el sufijo l / L la fuerza a ser del tipo long double. Ejemplo:

  • long lg1 = 3.0; // L.1:
  • long lg2 = 3.2L; // L.2:
  • long double = 4.0L; // L.3: Ok.

En L.1el compilador puede mostrar un aviso: Warning: initialization to 'long int' from 'double'. En L.2 el aviso sería: Warning: initialization to 'long int' from 'long double'.

Rangos permitidos

Los rangos permitidos para los tres tipos disponibles son: float, double y long double.

  • Tipo Tamaño (bits) Rango .
  • float 32 3.4 10^-38 a 3.4 10^38
  • double 64 1.7 10^-308 a 1.7 10^308
  • long double 80 3.4 10^-4932 a 1.1 10^4932

Véase también

Fuente