#include <iostream>
#include <cmath>

std::pair<double, double> div1(int num, double denom){
	double whole = std::floor(num / denom);
	double remain = std::fmod(num, denom);
	return {whole, remain};
}
std::pair<double, double> div2(int num, double denom){
	double floatdiv = num / denom;
	double whole;
	double remain = std::modf(floatdiv, &whole);
	return {whole, remain * denom};
}
std::pair<double, double> div3(int num, double denom){
	double whole = std::round(num / denom);
	double remain = std::remainder(num, denom);
	return {whole, remain};
}
int main() {
	double denom = 100.0 / 6;
	int divtype = 0;
	for(auto div: {div1, div2, div3}){
	    std::cerr << "== Using div" << ++divtype << " for this run ==\n";
        for(int i = 40; i <= 60; ++i){
            auto res = div(i, denom);
            std::cerr << i << ": " << res.first << ", " << res.second << " = " << res.first * denom + res.second << "\n";
        }
        auto oldprec = std::cerr.precision(64);
        auto res = div(50, denom);
        std::cerr << 50 << ": " << res.first << ", " << res.second << " = " << res.first << " * " << denom << " + " << res.second << " = " << std::floor(res.first) * denom + res.second << "\n";
        std::cerr.precision(oldprec);
        std::cerr << "\n";
	}
    return 0;
}
