Mega Code Archive

 
Categories / C++ Tutorial / Data Types
 

Compare double base on precision

#include <iostream> #include <cmath> using namespace std; bool doubleEquals(double left, double right, double epsilon) {   return (fabs(left - right) < epsilon); } bool doubleLess(double left, double right, double epsilon, bool orequal = false) {   if (fabs(left - right) < epsilon) {     return (orequal);   }   return (left < right); } bool doubleGreater(double left, double right, double epsilon, bool orequal = false) {   if (fabs(left - right) < epsilon) {     return (orequal);   }   return (left > right); } int main( ) {   double first = 0.33333333;   double second = 1.0 / 3.0;   cout << first << endl;   cout << second << endl;   cout << boolalpha << (first == second) << endl;   cout << doubleEquals(first, second, .0001) << endl;   cout << doubleLess(first, second, .0001) << endl;   cout << doubleGreater(first, second, .0001) << endl;   cout << doubleLess(first, second, .0001, true) << endl;   cout << doubleGreater(first, second, .0001, true) << endl; } 0.333333 0.333333 false true false true