1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 | #include <cmath> #include <limits> #include <cstdio> static double dRound(double d) { double inf = copysign(std::numeric_limits<double>::infinity(), d); double theNumberAfter = nextafter(d, inf); double epsilon = theNumberAfter - d; int factor = 100; d *= factor; epsilon *= factor/2; d += epsilon; double returnVal; printf("%.20g, ", modf(d, &returnVal)); printf("%.20g\n", returnVal); return returnVal / factor; } int main () { dRound(0.3); dRound(1.3); dRound(2.3); dRound(3.3); dRound(4.3); dRound(102.3); dRound(5); dRound(4.999999999); dRound(3.1415926535); dRound(2.718281828459045); dRound(-0.3); dRound(-1.3); dRound(-2.3); dRound(-3.3); dRound(-4.3); dRound(-102.3); dRound(-5); dRound(-4.999999999); dRound(-3.1415926535); dRound(-2.718281828459045); return 0; } |
ICAgICNpbmNsdWRlIDxjbWF0aD4KICAgICNpbmNsdWRlIDxsaW1pdHM+CiNpbmNsdWRlIDxjc3RkaW8+CgogICAgc3RhdGljIGRvdWJsZSBkUm91bmQoZG91YmxlIGQpIHsKICAgICAgIGRvdWJsZSBpbmYgPSBjb3B5c2lnbihzdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46OmluZmluaXR5KCksIGQpOwogICAgICAgZG91YmxlIHRoZU51bWJlckFmdGVyID0gbmV4dGFmdGVyKGQsIGluZik7CiAgICAgICBkb3VibGUgZXBzaWxvbiA9IHRoZU51bWJlckFmdGVyIC0gZDsKCiAgICAgICBpbnQgZmFjdG9yID0gMTAwOwogICAgICAgZCAqPSBmYWN0b3I7CiAgICAgICBlcHNpbG9uICo9IGZhY3Rvci8yOwogICAgICAgZCArPSBlcHNpbG9uOwoKICAgICAgIGRvdWJsZSByZXR1cm5WYWw7CiAgICAgICBwcmludGYoIiUuMjBnLCAiLCBtb2RmKGQsICZyZXR1cm5WYWwpKTsKICAgICAgIHByaW50ZigiJS4yMGdcbiIsIHJldHVyblZhbCk7CiAgICAgICByZXR1cm4gcmV0dXJuVmFsIC8gZmFjdG9yOwogICAgfQoKaW50IG1haW4gKCkgewogICAgZFJvdW5kKDAuMyk7CiAgICBkUm91bmQoMS4zKTsKICAgIGRSb3VuZCgyLjMpOwogICAgZFJvdW5kKDMuMyk7CiAgICBkUm91bmQoNC4zKTsKICAgIGRSb3VuZCgxMDIuMyk7CiAgICBkUm91bmQoNSk7CiAgICBkUm91bmQoNC45OTk5OTk5OTkpOwogICAgZFJvdW5kKDMuMTQxNTkyNjUzNSk7CiAgICBkUm91bmQoMi43MTgyODE4Mjg0NTkwNDUpOwoKICAgIGRSb3VuZCgtMC4zKTsKICAgIGRSb3VuZCgtMS4zKTsKICAgIGRSb3VuZCgtMi4zKTsKICAgIGRSb3VuZCgtMy4zKTsKICAgIGRSb3VuZCgtNC4zKTsKICAgIGRSb3VuZCgtMTAyLjMpOwogICAgZFJvdW5kKC01KTsKICAgIGRSb3VuZCgtNC45OTk5OTk5OTkpOwogICAgZFJvdW5kKC0zLjE0MTU5MjY1MzUpOwogICAgZFJvdW5kKC0yLjcxODI4MTgyODQ1OTA0NSk7CiAgICByZXR1cm4gMDsKfQ==
-
upload with new input
-
result: Success time: 0s memory: 2724 kB returned value: 0
0, 30 2.8421709430404007435e-14, 130 0, 230 0, 330 0, 430 0, 10230 5.684341886080801487e-14, 500 0.99999990000003435853, 499 0.1592653500000551503, 314 0.8281828459045073032, 271 -0, -30 -2.8421709430404007435e-14, -130 -0, -230 -0, -330 -0, -430 -0, -10230 -5.684341886080801487e-14, -500 -0.99999990000003435853, -499 -0.1592653500000551503, -314 -0.8281828459045073032, -271


