fork download
  1. #include <iostream>
  2. #include <cmath>
  3. using namespace std;
  4.  
  5. bool is_integer(double d)
  6. {
  7. const double EPSILON = 0.000000000001;
  8. if (std::fabs(std::round(d) - d) < EPSILON)
  9. {
  10. return true;
  11. }
  12. return false;
  13. }
  14.  
  15. void test(double numer, double denom)
  16. {
  17. double remainder = std::fmod(numer, denom);
  18. bool isInt = is_integer(remainder);
  19. cout.precision(20);
  20. cout << fixed << numer << " / " << denom << " = " << (numer / denom) << ", ";
  21. cout << "Is Integer? " << (isInt ? "Yes" : "No") << endl;
  22. }
  23.  
  24. int main()
  25. {
  26. double numer = std::nexttoward(2, 0);
  27. double denom = 2.0;
  28. test(numer, denom);
  29.  
  30. denom = 1.0;
  31. test(numer, denom);
  32.  
  33. denom = 3.0;
  34. test(numer, denom);
  35. return 0;
  36. }
Success #stdin #stdout 0s 3340KB
stdin
Standard input is empty
stdout
1.99999999999999977796 / 2.00000000000000000000 = 0.99999999999999988898, Is Integer?  Yes
1.99999999999999977796 / 1.00000000000000000000 = 1.99999999999999977796, Is Integer?  Yes
1.99999999999999977796 / 3.00000000000000000000 = 0.66666666666666662966, Is Integer?  Yes