025.- Curso C++ Básico. Los Float point o números de punto flotante.

025.- Curso C++ Básico. Los Float point o números de punto flotante.

Introducción a los Números de Punto Flotante

Concepto de Números de Punto Flotante

  • Los números de punto flotante se utilizan en programación para almacenar números con componentes fraccionarios y grandes, empleando notaciones científicas.
  • En español, se les llama "números de coma flotante", pero en inglés y C++ se utiliza el punto como separador decimal.

Tipos de Datos de Punto Flotante

  • Existen tres tipos principales: float, double y long double. C++ no define tamaños exactos, solo garantiza mínimos.
  • En arquitecturas modernas, un float ocupa 4 bytes, un double 8 bytes y un long double entre 8 y 16 bytes. Todos son signados.

Uso Correcto de Literales

  • Es importante incluir al menos un lugar decimal en literales para que el compilador reconozca que son números de punto flotante.
  • Se debe evitar usar literales enteros donde se requieren literales de punto flotante para prevenir conversiones innecesarias.

Ejemplos Prácticos y Notación Científica

Comportamiento del Compilador

  • Al imprimir un número como 5.0, si la parte fraccionaria es cero, el compilador puede omitirla.
  • La notación científica se presenta cuando los números son muy grandes; por ejemplo, 9 millones puede representarse como 9 times 10^6.

Limitaciones en Representación Decimal

  • Las computadoras tienen limitaciones en la representación decimal; por ejemplo, 1/3 es aproximadamente 0.33333, lo que plantea problemas con precisión infinita.

Precisión en Números de Punto Flotante

Determinación de Precisión

  • La precisión predeterminada para salida estándar (std::cout) es generalmente 6 dígitos significativos.
  • Los diferentes tipos tienen distintas precisiones:
  • float: entre 3 a 7 dígitos,
  • double: entre 15 a 18 dígitos,
  • long double: hasta 33 dígitos dependiendo del tamaño.

Manipulación de Salida

  • Se puede modificar la precisión usando manipuladores como std::setprecision(), permitiendo establecer una mayor cantidad de dígitos significativos al imprimir.

Problemas Comunes con Números Flotantes

Errores por Redondeo

  • Los problemas no solo afectan a fracciones sino también a números con muchos dígitos significativos; esto puede resultar en errores conocidos como errores de redondeo.

Errores de Redondeo en Números de Punto Flotante

Uso Preferente del Tipo Doble

  • Se recomienda utilizar el tipo de dato duble sobre float para evitar errores de redondeo, ya que los números flotantes pueden provocar problemas debido a su representación binaria.

Problemas de Precisión con Punto Flotante

  • Al asignar 0.1 a un número de punto flotante, se presentan problemas de precisión. Aunque se espera obtener 0.1, la representación en memoria puede truncar el valor debido a limitaciones.

Consecuencias de los Errores de Redondeo

  • Los errores de redondeo pueden resultar en valores inesperados; por ejemplo, al sumar 10 veces 0.1, el resultado no es exactamente 1 como se esperaría.

Comparación y Operaciones Matemáticas

  • Comparar números de punto flotante es problemático debido a su inexactitud inherente. Las operaciones matemáticas pueden amplificar estos errores y causar resultados erróneos.

Naturaleza Inherente del Error

  • Los errores de redondeo son comunes y no excepcionales en tipos flotantes; nunca se debe asumir que estos números son exactos, especialmente en contextos financieros.

Categorías Especiales: INF y NaN

  • Existen dos categorías especiales: INF (infinito positivo o negativo) y NaN (no es un número), que pueden comportarse diferente según el compilador utilizado.

Buenas Prácticas al Usar Números Flotantes

  • Es recomendable evitar divisiones por cero y ser consciente que los números flotantes son útiles pero propensos a pequeños errores que pueden afectar comparaciones significativas.

Resumen Final sobre Números Flotantes

Video description

Acceso al AsistenteCPP: https://tinyurl.com/AsistenteCPP. NOTA: En el minuto 7:54 hay apenas un segundo que no se oye, lo que se dice en ese momento es: "vemos que "d" no nos da 0.1 exacto". Videotutorial que dedicamos a los Float point o números de punto flotante; Los tres tipos de datos float point: float, double, long double; Ejemplos de definiciones con números de punto flotante; Uso de prefijos para determinar el tipo; Uso de notaciones científicas; Número de dígitos de precisión y truncamientos; Anular precisión predeterminada con el uso de std::setprecision( ); Errores de redondeo; Categorías especiales de números flotantes: NaN e Inf. Código completo del curso: https://github.com/0utKast/CursoCPPGitHub/archive/refs/heads/master.zip