#include <iostream>
#include <cmath>
using namespace std;
bool is_integer(double d)
{
const double EPSILON = 0.000000000001;
if (std::fabs(std::round(d) - d) < EPSILON)
{
return true;
}
return false;
}
void test(double numer, double denom)
{
double remainder = std::fmod(numer, denom);
bool isInt = is_integer(remainder);
cout.precision(20);
cout << fixed << numer << " / " << denom << " = " << (numer / denom) << ", ";
cout << "Is Integer? " << (isInt ? "Yes" : "No") << endl;
}
int main()
{
double numer = std::nexttoward(2, 0);
double denom = 2.0;
test(numer, denom);
denom = 1.0;
test(numer, denom);
denom = 3.0;
test(numer, denom);
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8Y21hdGg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7Cgpib29sIGlzX2ludGVnZXIoZG91YmxlIGQpCnsKICAgIGNvbnN0IGRvdWJsZSBFUFNJTE9OID0gMC4wMDAwMDAwMDAwMDE7CiAgICBpZiAoc3RkOjpmYWJzKHN0ZDo6cm91bmQoZCkgLSBkKSA8IEVQU0lMT04pCiAgICB7CiAgICAJcmV0dXJuIHRydWU7CiAgICB9CiAgICByZXR1cm4gZmFsc2U7Cn0KCnZvaWQgdGVzdChkb3VibGUgbnVtZXIsIGRvdWJsZSBkZW5vbSkKewoJZG91YmxlIHJlbWFpbmRlciA9IHN0ZDo6Zm1vZChudW1lciwgZGVub20pOwoJYm9vbCBpc0ludCA9IGlzX2ludGVnZXIocmVtYWluZGVyKTsKCWNvdXQucHJlY2lzaW9uKDIwKTsKCWNvdXQgPDwgZml4ZWQgPDwgbnVtZXIgPDwgIiAvICIgPDwgZGVub20gPDwgIiA9ICIgPDwgKG51bWVyIC8gZGVub20pIDw8ICIsICI7Cgljb3V0IDw8ICJJcyBJbnRlZ2VyPyAgIiA8PCAoaXNJbnQgPyAiWWVzIiA6ICJObyIpIDw8IGVuZGw7Cn0KCmludCBtYWluKCkgCnsKCWRvdWJsZSBudW1lciA9IHN0ZDo6bmV4dHRvd2FyZCgyLCAwKTsKCWRvdWJsZSBkZW5vbSA9IDIuMDsKCXRlc3QobnVtZXIsIGRlbm9tKTsKCQoJZGVub20gPSAxLjA7Cgl0ZXN0KG51bWVyLCBkZW5vbSk7CgkKCWRlbm9tID0gMy4wOwoJdGVzdChudW1lciwgZGVub20pOwoJcmV0dXJuIDA7Cn0=