Diferencia entre flotador y doble flotador: ¿cuál debo usar?

(Nota: este artículo asume que los lectores conocen los conceptos básicos de informática)

Muchos programadores/estudiantes novatos matriculados en Ciencias de la Computación hacen las preguntas comunes relacionadas con el área particular dentro de las Ciencias de la Computación que están estudiando. La mayoría de los cursos para principiantes comienzan con los temas del sistema numérico utilizado en las computadoras modernas, incluido el binario, decimal, ocho y hexadecimal sistema. Estos son los formatos de números de computadora que son la representación interna de los valores numéricos en las computadoras (o calculadoras y cualquier otro tipo de computadora digital). Estos valores se almacenan como una «agrupación de bits».

Como sabemos, las computadoras representan datos en conjuntos de dígitos binarios (es decir, en combinación de 1s y 0scomo, 1111 igual 15 en el sistema decimal), tiene sentido enseñar sobre los diferentes formatos numéricos utilizados para representar un rango dinámico de valores, ya que son los componentes básicos del cálculo/procesamiento de números en cualquier tipo de operación. Cuando el sistema numérico se define en el aula (a menudo de manera deficiente), los estudiantes se ven tentados a pasar a los diferentes formatos numéricos dentro del mismo tipo (p. aritmética de coma flotante) que tienen un cierto número de precisión y rango. Por lo tanto, se ven obligados a aprender los matices entre ciertos tipos. Hay dos de los tipos de datos más utilizados Natación y Dobley aunque se centran en las mismas necesidades (es decir, aritmética de punto flotante), existen muchas diferencias en su representación interna y el efecto general sobre el cálculo en el programa. Desafortunadamente, muchos programadores pasan por alto los matices entre los tipos de datos planos y dobles, y los usan incorrectamente en lugares donde no deberían usarse en primer lugar. En última instancia, como resultado de errores de cálculo en otras partes del programa.

En este artículo, te diré la diferencia entre float y double con los ejemplos de código en el lenguaje de programación C. ¡Vamos!

Flotación vs. Doble… ¿Cuál es el trato?

El punto flotante y el doble son la representación de datos utilizada para las operaciones aritméticas de punto flotante, piense en los números decimales que calcula en la clase de matemáticas, por ejemplo, 20. 123, 16.23, 10.2etc., no son números enteros (es decir, 2, 5, 15, etc.), por lo que necesitan considerar fracciones en binario. Como los números decimales resultantes (es decir, 20. 123, 16.23, etc.) se pueden representar fácilmente con un formato binario estándar (es decir, entero). La principal diferencia entre Float y Double es que el primero es un tipo de datos de punto flotante de precisión simple (32 bits), mientras que el segundo es un tipo de datos de punto flotante de precisión doble (64 bits). Double se llama «doble» porque es una versión de doble precisión de punto flotante. Si está calculando una cantidad enorme (piense en miles de 0 en el número), entonces las imprecisiones serán menores en el Doble y no perderá mucha precisión.

Descubre también la:  Diferencia entre Amazon y Flipkart

Es mejor elaborar usando los ejemplos de código. A continuación se muestra la operación sobre Punto Flotante y Doble a través de las funciones matemáticas proporcionadas en lenguaje C:

# agregar incluido

int principal() {

flotante no1 = 1.f / 82;

flotante no2 = 0;

para (int i = 0; i < 738; ++ i)

numero2 += numero1;

printf(«%.7g\n», no2);

número doble3 = 1.0 / 82;

número doble 4 = 0;

para (int i = 0; i < 738; ++ i)

número4 += número3;

printf(«%.15g\n», no4);

getchar();

}

Imprime lo siguiente:

9.000031

8.9999999999983

Aquí puede ver que la pequeña diferencia en la precisión de Float y Double da una respuesta completamente diferente, aunque Double parece ser más preciso que Float.

El siguiente es el ejemplo de la función sqrt() en C:

# agregar incluido

# agregar incluido

int principal() {

float num1 = sqrt(2382719676512365.1230112312312312);

numero doble2 = sqrt(2382719676512365.1230112312312312);

printf(«%f\n», no1);

printf(«%f\n», no2);

getchar();

}

Da el siguiente resultado:

48813108.000000

48813109. 678778

Aquí puede ver que la respuesta tiene una mayor precisión en Doble.

En general, es mejor usar Double para la aritmética de punto flotante, porque algunas funciones matemáticas estándar en C funcionan en computadoras Double y las computadoras modernas son muy rápidas y eficientes para los cálculos de punto flotante Double. Esto reduce la necesidad de usar coma flotante, a menos que necesite trabajar con muchos números de coma flotante (piense en arreglos grandes con miles de 0 en los números) o si está ejecutando en un sistema que no admite números de coma flotante doble. -precisión de punto, debido a que muchas GPU, dispositivos de bajo consumo y ciertas plataformas (ARM Cortex-M2, Cortex-M4, etc.) aún no son compatibles con Double, debe usar Floating-point. Además, una cosa a tener en cuenta es que algunas GPU/CPU funcionan mejor/eficientemente en el procesamiento de punto flotante, como en los cálculos vectoriales/matrices, por lo que es posible que deba consultar el manual/documentación de especificaciones de hardware para decidir mejor cuál debe usar. usar. para una máquina en particular.

Descubre también la:  Diferencias entre Kubuntu y Debian

Rara vez hay una razón para usar un punto flotante en lugar de un doble en el código que se dirige a las computadoras modernas. La precisión extra en Doubles reduce, pero no elimina, la posibilidad de errores de redondeo u otras inexactitudes que podrían causar problemas en otras partes del programa. Muchas funciones u operadores matemáticos convierten y devuelven dobles, por lo que no necesita volver a convertir los números en punto flotante, ya que eso puede perder precisión. Para obtener un análisis detallado de la aritmética de punto flotante, le recomiendo que lea este increíble artículo (http://docs.oracle.com/cd/E19957-01/806-3568/ncg_goldberg.html).

Resumen

Entonces… en resumen:

Lugares donde debes usar Float:

  • Si está apuntando a hardware donde la precisión simple es más rápida que la precisión doble.
  • Su aplicación hace un uso intensivo de la aritmética de coma flotante, como miles de números con miles de ceros.
  • Estás haciendo una optimización de muy bajo nivel. Por ejemplo, está utilizando instrucciones especiales de CPU (es decir, SSE, SSE2, AVX, etc.) que operan en múltiples números/matrices/vectores al mismo tiempo.

Conclusión

En este artículo he resaltado la diferencia entre Float y Double, y cuál debe usarse en lugares específicos. Podría decirse que es mejor usar Double a ciegas en la mayoría de los lugares, especialmente si está apuntando a computadoras modernas, ya que las posibilidades de baja eficiencia son poco probables debido al uso de aritmética de coma flotante doble. Si tiene alguna pregunta, ¡puede hacerla en la sección de comentarios a continuación!

Wlip.es

Somos entusiastas de la tecnología, la ciencia y sus avances. Nuestra curiosidad nunca se sacia y por eso intentamos investigar y conocer cada día más cosas. Te traemos las diferencias más curiosas sobre conceptos, cosas y mucho más.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *