VOOZH about

URL: https://www.geeksforgeeks.org/dsa/problem-in-comparing-floating-point-numbers-and-how-to-compare-them-correctly/

⇱ Problem in comparing Floating point numbers and how to compare them correctly? - GeeksforGeeks


  • Courses
  • Tutorials
  • Interview Prep

Problem in comparing Floating point numbers and how to compare them correctly?

Last Updated : 12 Jul, 2025

In this article, we will see what is the problem in comparing floating-point numbers and we will discuss the correct way to compare two floating-point numbers. 

Let us first compare two floating-point numbers with the help of relational operator (==).
Example: Using "==" for comparison
 


Output: 
The numbers are not equal

 

Time complexity of this program is O(1), as it only performs a comparison between two floating point numbers.

The space complexity is also O(1), as the program uses only a constant amount of memory for storing the two floating point numbers and a few local variables used for the comparison.


In the case of floating-point numbers, the relational operator (==) does not produce correct output, this is due to the internal precision errors in rounding up floating-point numbers.
In the above example, we can see the inaccuracy in comparing two floating-point numbers using "==" operator. The two numbers 'a' and 'b' are equal ( as (0.3 * 3) + 0.1 = 1 ) but the program results in an incorrect output.
Let's take a closer look at the numbers in the next snippet.
 


Output: 
a is : 0.99999999999999988898
b is : 1

 

Time complexity:
The program has a constant time complexity, as it only performs a fixed set of operations and does not depend on the input size. Therefore, the time complexity is O(1).

Space complexity:
The program uses a fixed amount of memory for the double variables a and b, as well as for the output printed to the console. Therefore, the space complexity is also O(1).

Now we can see the internal rounding error in floating-point numbers. Number 'a' is not correctly rounded up to 1, 
there is an internal error in rounding up, a very small error but makes a huge difference when we are comparing the numbers.
 
If we do have to compare two floating-point numbers then rather than using "==" operator we will find the absolute difference between the numbers (which if were correctly represented, the difference would have been 0) and compare it with a very small number 1e-9 (i.e 10^-9, this number is very small) and if the difference is less than this number, we can safely say that the two floating-point numbers are equal.
Example: 
 


Output: 
The numbers are equal

 

This code results in the correct output, so whenever two floating point numbers are two be compared then rather than using "==" operator, we will use the above technique.
 

Comment
Article Tags:
Article Tags: