Literal de punto flotante
Un literal de punto[1] flotante define una constante en tiempo de compilación cuyo valor se especifica en el archivo fuente.
Contenido |
[editar] Sintaxis
secuencia-dígitos exponente-decimal sufijo(opcional) | (1) | ||||||||
secuencia-dígitos . exponente-decimal(opcional) sufijo(opcional)
|
(2) | ||||||||
secuencia-dígitos(opcional) . secuencia-dígitos exponente-decimal(opcional) sufijo(opcional)
|
(3) | ||||||||
0x | 0X secuencia-dígitos-hexadecimales exponente-hexadecimal sufijo(opcional)
|
(4) | (desde C++17) | |||||||
0x | 0X secuencia-dígitos-hexadecimales . exponente-hexadecima sufijo(opcional)
|
(5) | (desde C++17) | |||||||
0x | 0X secuencia-dígitos-hexadecimales(opcional) . secuencia-dígitos-hexadecimales exponente-hexadecima sufijo(opcional)
|
(6) | (desde C++17) | |||||||
El exponente-decimal tiene la forma
e | E signo-exponente(opcional) secuencia-dígitos
|
|||||||||
El exponente-hexadecimal tiene la forma
p | P signo-exponente(opcional) secuencia-dígitos
|
(desde C++17) | ||||||||
El signo-exponente, si está, será +
o -
El sufijo, si está, es f
, F
, l
, o L
. El sufijo determina el tipo de literal de punto flotante:
- (sin sufijo) indica double,
-
f F
indica float, -
l L
indica long double.
Se pueden insertar comillas simples opcionales ( |
(desde C++14) |
[editar] Explicación
Se usa la notación científica decimal, que quiere decir que el valor del literal de punto flotante es el número multiplicado por 10 elevado al exponente-decimal. Por ejemplo: el valor matemático de 123e4 es 123×104.
Si el literal de punto flotante empieza con la secuencia de caracteres Para un literal de punto flotante hexadecimal, el número se interpreta como un número racional hexadecimal, y la secuencia-dígitos del exponente como la potencia entera de 2 a la que se eleva el número. double d = 0x1.4p3; // fracción hexadecimal 1.4 (decimal 1.25) por 2^3, es decir 10.0 |
(desde C++17) |
[editar] Notas
Los literales de punto flotante hexadecimales no formaban parte de C++ hasta C++17, aunque las funciones de E/S pueden analizarlos e imprimirlos desde C++11: tanto los flujos de E/S de C++ cuando está habilitado std::hexfloat como los flujos de E/S de C: std::printf, std::scanf, etc. Véase std::strtof para la descripción del formato.
[editar] Ejemplo
#include <iostream> int main() { std::cout << 58. << '\n' << 4e2 << '\n' << 123.456e-67 << '\n' << .1E4f << '\n' << 0x10.1p0 << '\n' << 0x1e5 << '\n'; // literal de entero, no de punto flotante }
Salida:
58 400 1.23456e-65 1000 16.0625 485
[editar] Véase también
Literales definidos por el usuario(C++11) | Literales con sufijo definidos por el usuario |
Documentación de C para Constante de punto flotante
|