// https://stackoverflow.com/q/17035464/4208440
#include <cstdio>
 
/**
 * Round to the nearest integer.
 * for tie-breaks: round half to even (bankers' rounding)
 */
inline double rint(double d)
{
	double x = 6755399441055744.0;  // 1.5 * pow (2, 52);
    return d + x - x;
}
 
int main()
{
	// round to nearest integer
    printf("%.1f, %.1f\n", rint(-12345678.3), rint(-12345678.9));
 
    // test tie-breaking rule
    printf("%.1f, %.1f, %.1f, %.1f\n", rint(-24.5), rint(-23.5), rint(23.5), rint(24.5));
    return 0;
}
 
// output:
// -12345678.0, -12345679.0
// -24.0, -24.0, 24.0, 24.0
 
				Ly8gaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9xLzE3MDM1NDY0LzQyMDg0NDAKI2luY2x1ZGUgPGNzdGRpbz4KCi8qKgogKiBSb3VuZCB0byB0aGUgbmVhcmVzdCBpbnRlZ2VyLgogKiBmb3IgdGllLWJyZWFrczogcm91bmQgaGFsZiB0byBldmVuIChiYW5rZXJzJyByb3VuZGluZykKICovCmlubGluZSBkb3VibGUgcmludChkb3VibGUgZCkKewoJZG91YmxlIHggPSA2NzU1Mzk5NDQxMDU1NzQ0LjA7ICAvLyAxLjUgKiBwb3cgKDIsIDUyKTsKICAgIHJldHVybiBkICsgeCAtIHg7Cn0KCmludCBtYWluKCkKewoJLy8gcm91bmQgdG8gbmVhcmVzdCBpbnRlZ2VyCiAgICBwcmludGYoIiUuMWYsICUuMWZcbiIsIHJpbnQoLTEyMzQ1Njc4LjMpLCByaW50KC0xMjM0NTY3OC45KSk7CgogICAgLy8gdGVzdCB0aWUtYnJlYWtpbmcgcnVsZQogICAgcHJpbnRmKCIlLjFmLCAlLjFmLCAlLjFmLCAlLjFmXG4iLCByaW50KC0yNC41KSwgcmludCgtMjMuNSksIHJpbnQoMjMuNSksIHJpbnQoMjQuNSkpOwogICAgcmV0dXJuIDA7Cn0KCi8vIG91dHB1dDoKLy8gLTEyMzQ1Njc4LjAsIC0xMjM0NTY3OS4wCi8vIC0yNC4wLCAtMjQuMCwgMjQuMCwgMjQuMAo=