Después de investigar en varios repositorios y sitios al concluir dimos con la solución que te enseñaremos más adelante.
El literal de coma flotante define una constante en tiempo de compilación cuyo valor se especifica en el archivo de origen.
Sintaxis
secuencia de dígitosexponentesufijo(Opcional) | (1) | |
secuencia de dígitos. exponente(Opcional)sufijo(Opcional) |
(2) | |
secuencia de dígitos(Opcional). secuencia de dígitosexponente(Opcional)sufijo(Opcional) |
(3) | |
0x | 0X secuencia de dígitos hexadecimalesexponentesufijo(Opcional) |
(4) | (desde C ++ 17) |
0x | 0X secuencia de dígitos hexadecimales. exponentesufijo(Opcional) |
(5) | (desde C ++ 17) |
0x | 0X secuencia de dígitos hexadecimales(Opcional). secuencia de dígitos hexadecimalesexponentesufijo(Opcional) |
(6) | (desde C ++ 17) |
1)secuencia de dígitos representa un número entero sin un separador decimal, en este caso el exponente no es opcional: 1e10
, 1e-5L
2)secuencia de dígitos representando un número entero con un separador decimal, en este caso el exponente es opcional: 1.
, 1.e-2
3)secuencia de dígitos que representa un número fraccionario. El exponente es opcional: 3.14
, .1f
, 0.1e-1L
4) Hexadecimal secuencia de dígitos que representa un número entero sin un separador de base. El exponente nunca es opcional para literales hexadecimales de punto flotante: 0x1ffp10
, 0X0p-1
5) Hexadecimal secuencia de dígitos que representa un número entero con un separador de base. El exponente nunca es opcional para literales hexadecimales de punto flotante: 0x1.p0
, 0xf.p-1
6) Hexadecimal secuencia de dígitos que representa un número fraccionario con un separador de base. El exponente nunca es opcional para literales hexadecimales de punto flotante: 0x0.123p-1
, 0xa.bp10l
El exponente tiene la forma.
e | E signo-exponente(Opcional)secuencia de dígitos |
(1) | |
p | P signo-exponente(Opcional)secuencia de dígitos |
(2) | (desde C ++ 17) |
1) La sintaxis del exponente para un literal de coma flotante decimal2) La sintaxis del exponente para el literal de punto flotante hexadecimal
signo-exponente, si está presente, es +
o -
sufijo, si está presente, es uno de f
, F
, l
, o L
. El sufijo determina el tipo de literal de punto flotante:
- (sin sufijo) define
double
f F
definefloat
l L
definelong double
Comillas simples opcionales (' ) se pueden insertar entre los dígitos como separador, se ignoran al compilar. |
(desde C ++ 14) |
Explicación
Se usa notación científica decimal, lo que significa que el valor del literal de coma flotante es el significado multiplicado por el número 10 elevado a la potencia de exponente. El significado matemático de 123e4
es 123 × 104.
Si el literal flotante comienza con la secuencia de caracteres Para literal flotante hexadecimal, el significando se interpreta como un número racional hexadecimal, y el secuencia de dígitos del exponente se interpreta como la potencia entera de 2 a la que se debe escalar el significando. double d =0x1.2p3;// hex fraction 1.2 (decimal 1.125) scaled by 2^3, that is 9.0 |
(desde C ++ 17) |
Ejemplo
#includeintmain() std::cout <<58.<<'n'<<4e2<<'n'<<123.456e-67<<'n'<<.1E4f<<'n'<<0x10.1p0<<'n';
Producción:
584001.23456e-65100016.0625
Notas
Los literales hexadecimales de punto flotante no formaban parte de C ++ hasta C ++ 17, aunque pueden ser analizados e impresos por las funciones de E / S desde C ++ 11: ambos flujos de E / S de C ++ cuando std::hexfloat
está habilitado y los flujos de CI / O: std::printf
, std::scanf
, etc. Ver std::strtof
para la descripción del formato.
Ver también
literales definidos por el usuario | literales con sufijo definido por el usuario (C ++ 11) |
Eres capaz de apoyar nuestra tarea poniendo un comentario o dejando una puntuación te damos las gracias.