Difference between float and double in C/C++
Last Updated :
23 Jun, 2023
To represent floating point numbers, we use float, double, and long double. What's the difference? double has 2x more precision than float. float is a 32-bit IEEE 754 single precision Floating Point Number - 1 bit for the sign, 8 bits for the exponent, and 23* for the value. float has 7 decimal digits of precision. double is a 64-bit IEEE 754 double precision Floating Point Number - 1 bit for the sign, 11 bits for the exponent, and 52* bits for the value. double has 15 decimal digits of precision.
Let's take an example: For a quadratic equation x^2 - 4.0000000 x + 3.9999999 = 0, the exact roots to 10 significant digits are, r1 = 2.000316228 and r2 = 1.999683772. Notice the difference in using float and double.
C++
// C program to demonstrate
// double and float precision values
#include <math.h>
#include <stdio.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 x^2- 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;
}
Outputroots of equation x2- 4.0000000 x + 3.9999999= 0 are:
for float values:
2.00000 2.00000
for double values:
2.00032 1.99968
Complexity Analysis
- The time complexity of the given code is O(1)
- The auxiliary space complexity of the code is also O(1)
Difference between float and double
Let us see the differences in a tabular form that is as follows:
float
| double
|
|---|
| Its size is 4 bytes | Its size is 8 bytes |
| It has 7 decimal digits precision | It has 15 decimal digits precision |
| It is an integer data type but with decimals | It is an integer data type but with decimals |
| It may get Precision errors while dealing with large numbers | It will not get precision errors while dealing with large numbers. |
| This data type supports up to 7 digits of storage. | This data type supports up to 15 digits of storage. |
| For float data type, the format specifier is %f. | For double data type, the format specifier is %lf. |
| For example -: 3.1415 | For example -: 5.3645803 |
| It is less costly in terms of memory usage. | It is costly in terms of memory usage. |
| It requires less memory space as compared to double data type. | It needs more resources such as occupying more memory space in comparison to float data type. |
| It is suitable in graphics libraries for greater processing power because of its small range. | It is suitable to use in the programming language to prevent errors while rounding off the decimal values because of its wide range. |
Explore
C++ Basics
Core Concepts
OOP in C++
Standard Template Library(STL)
Practice & Problems