Disponible la nueva versión "donationware" 7.3 de OrganiZATOR
Descubre un nuevo concepto en el manejo de la información.
La mejor ayuda para sobrevivir en la moderna jungla de datos la tienes aquí.

Curso C++

[Home]  [Inicio]  [Índice]


3.2.3c Constantes fraccionarias

§1 Sinopsis

Las constantes fraccionarias (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 el código fuente puede contener:

  • Parte entera                                        37.092e-2L

  • Punto decimal [1]                                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 ( - ).

§2 Dos 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 ).

Más información sobre la notación científica en ( 2.2.4a)


§3 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.

Ejemplo relacionado: ( 2.2.4a)


§4 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'.


§5 La tabla adjunta muestra los rangos permitidos para los tres tipos disponibles: 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

  Inicio.


[1] No se emplea la coma decimal " , " sino el punto " . " (como es costumbre en USA).