Tipos enteros frente a tipos de punto flotante
Elija el tipo numérico adecuado comprendiendo las diferencias de tamaño, rango y precisión.
Tipos enteros frente a tipos de punto flotante es una lección gratuita de C++ Academy en CoddyKit. Esta es la lección 1 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de C++ Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de C++ Academy incluye 4 lecciones en total.
Dos mundos numéricos
C++ tiene dos familias de tipos numéricos: enteros (sin fracciones y exactos) y coma flotante (aproximados y con fracciones). Elija la familia adecuada para cada tarea.
Tipos enteros
Tipos enteros integrados y tamaños habituales en sistemas de 64 bits:
char— 1 byteshort— 2 bytesint— 4 byteslong— 4 u 8 byteslong long— 8 bytes
Con signo frente a sin signo
Añada unsigned para eliminar el rango negativo. La aritmética sin signo da la vuelta módulo 2^N: a veces es útil, pero a menudo causa errores sutiles.
unsigned int u = 0;
u -= 1; // wraps around to 4,294,967,295Enteros de ancho fijo
Utilice los tipos de <cstdint> cuando necesite tamaños exactos, por ejemplo, para protocolos, formatos de archivo o portabilidad entre plataformas.
#include <cstdint>
int8_t tiny = 100;
int32_t word = 100000;
int64_t big = 1LL << 40;
uint64_t huge = 18446744073709551615ULL;Tipos de coma flotante
Tres tipos de coma flotante con precisión creciente:
float— 32 bits, aproximadamente 7 dígitos decimalesdouble— 64 bits, aproximadamente 15 dígitos decimaleslong double— normalmente 80 o 128 bits
Formato IEEE 754
Los valores de coma flotante siguen el estándar IEEE 754: signo, exponente y mantisa. Pueden representar valores muy grandes y muy pequeños, pero no con exactitud.
Problemas de la coma flotante
La mayoría de los números decimales no se pueden representar exactamente en binario. 0.1 + 0.2 no es exactamente 0.3.
double sum = 0.1 + 0.2;
std::cout << (sum == 0.3); // false on most systems
std::cout << sum; // 0.3 but printed approximatelyComparar valores de coma flotante de forma segura
No compare nunca valores de coma flotante con ==. Compárelos dentro de una tolerancia pequeña (epsilon).
bool approxEqual(double a, double b, double eps = 1e-9) {
return std::abs(a - b) < eps;
}Valores especiales de coma flotante
Los valores de coma flotante tienen tres valores especiales: NaN (no es un número), +inf y -inf. Utilice los predicados de <cmath> para comprobarlos.
#include <cmath>
double x = std::sqrt(-1.0);
if (std::isnan(x)) std::cout << "Not a number";
if (std::isinf(x)) std::cout << "Infinity";Cuándo utilizar cada tipo
Elija según el ámbito:
- Conteos e índices →
intosize_t - Cálculos científicos o gráficos →
double - Dinero → ¡nunca
double! Utilice enteros escalados (céntimos) o una biblioteca decimal
Los tamaños de los tipos varían según la plataforma
El estándar solo garantiza tamaños mínimos. int puede tener 16, 32 o 64 bits. Para lograr portabilidad, utilice tipos de ancho fijo de <cstdint> en las estructuras de datos.
Comprobación rápida
¿Qué tipo debe utilizar para representar valores monetarios con precisión?
Resumen
Los enteros son exactos; los valores de coma flotante son aproximados. Elija int o enteros de ancho fijo para los conteos, double para cálculos científicos y no utilice nunca valores de coma flotante para dinero. Compare los valores de coma flotante con una tolerancia, nunca con ==.
Preguntas frecuentes
¿La lección «Tipos enteros frente a tipos de punto flotante» es gratis?
Sí — el texto completo de «Tipos enteros frente a tipos de punto flotante» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de C++ Academy, actualiza a CoddyKit PRO. El curso de C++ Academy incluye 4 lecciones en total.
¿Qué aprenderé en «Tipos enteros frente a tipos de punto flotante»?
Elija el tipo numérico adecuado comprendiendo las diferencias de tamaño, rango y precisión. Practicas C++ Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.
¿Necesito experiencia previa para empezar C++ Academy?
No se requiere experiencia previa. C++ Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 1 de 4.
¿Cuánto tiempo toma la lección «Tipos enteros frente a tipos de punto flotante»?
La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.
¿Puedo escribir y ejecutar código en esta lección de C++ Academy?
Sí. Cada lección de C++ Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.
Todas las lecciones de este curso
- Tipos enteros frente a tipos de punto flotante
- La cabecera cmath: pow, sqrt, abs y round
- Números aleatorios con la cabecera random
- Límites numéricos y comportamiento de overflow