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