Constantes fraccionarias (Informática)
|
- 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