Diferencia entre float y double en C/C++

Para representar números de coma flotante, usamos float , double y long double . ¿Cual es la diferencia? double tiene 2 veces más precisión que float . float es un número de coma flotante de precisión simple IEEE 754 de 32 bits: 1 bit para el signo, 8 bits para el exponente y 23* para el valor. float tiene 7 dígitos decimales de precisión. double es un número de coma flotante de doble precisión IEEE 754 de 64 bits: 1 bit para el signo, 11 bits para el exponente y 52* bits para el valor. double tiene 15 dígitos decimales de precisión. Tomemos un ejemplo (tomado de aquí ): Para una ecuación cuadrática x2 – 4.0000000 x + 3.9999999 = 0, las raíces exactas de 10 dígitos significativos son, r1 = 2.000316228 y r2 = 1.999683772. Note la diferencia en usar float y double.

CPP

// C program to demonstrate
// double and float precision values
 
#include <stdio.h>
#include <math.h>
 
// utility function which calculate roots of
// quadratic equation using double values
void double_solve(double a, double b, double c){
    double d = b*b - 4.0*a*c;
    double sd = sqrt(d);
    double r1 = (-b + sd) / (2.0*a);
    double r2 = (-b - sd) / (2.0*a);
    printf("%.5f\t%.5f\n", r1, r2);
}
 
// utility function which calculate roots of
// quadratic equation using float values
void float_solve(float a, float b, float c){
    float d = b*b - 4.0f*a*c;
    float sd = sqrtf(d);
    float r1 = (-b + sd) / (2.0f*a);
    float r2 = (-b - sd) / (2.0f*a);
    printf("%.5f\t%.5f\n", r1, r2);
}  
 
// driver program
int main(){
    float fa = 1.0f;
    float fb = -4.0000000f;
    float fc = 3.9999999f;
    double da = 1.0;
    double db = -4.0000000;
    double dc = 3.9999999;
 
    printf("roots of equation x2 - 4.0000000 x + 3.9999999 = 0 are : \n");
    printf("for float values: \n");
    float_solve(fa, fb, fc);
 
    printf("for double values: \n");
    double_solve(da, db, dc);
    return 0;
} 

Producción:

roots of equation x2 - 4.0000000 x + 3.9999999 = 0 are : 
for float values: 
2.00000    2.00000
for double values: 
2.00032    1.99968

Veamos las diferencias en forma tabular -:

  flotar doble
1. Su tamaño es de 4 bytes. Su tamaño es de 8 bytes.
2. Tiene una precisión de 7 dígitos decimales. Tiene una precisión de 15 dígitos decimales.
3. Es un tipo de dato entero pero con decimales Es un tipo de dato entero pero con decimales
4. Puede obtener errores de precisión al tratar con grandes números No obtendrá errores de precisión al tratar con grandes números.
5. Por ejemplo -: 3.1415 Por ejemplo -: 5.3645803

Este artículo es una contribución de Mandeep Singh . Si te gusta GeeksforGeeks y te gustaría contribuir, también puedes escribir un artículo usando write.geeksforgeeks.org o enviar tu artículo por correo a review-team@geeksforgeeks.org. Vea su artículo que aparece en la página principal de GeeksforGeeks y ayude a otros Geeks. Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.

Publicación traducida automáticamente

Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

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