Open In App

Difference between float and double in C/C++

Improve
Improve
Improve
Like Article
Like
Save Article
Save
Share
Report issue
Report

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;
}


Output

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
 

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.

 



Last Updated : 23 Jun, 2023
Like Article
Save Article
Previous
Next
Share your thoughts in the comments
Similar Reads