#include <iostream>
#include <iomanip>
#include <cmath>
// fast pow for int, credit to https://stackoverflow.com/a/101613/13188071
int ipow(int base, int exp)
{
int result = 1;
while (true)
{
if (exp & 1)
result *= base;
exp >>= 1;
if (exp == 0)
break;
base *= base;
}
return result;
}
double round_prec(double n, int prec)
{
return std::round(n * ipow(10, prec)) / ipow(10, prec);
}
int main()
{
std::cout << std::setprecision(20) << round_prec(3.1415, 2) << '\n';
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8aW9tYW5pcD4KI2luY2x1ZGUgPGNtYXRoPgoKLy8gZmFzdCBwb3cgZm9yIGludCwgY3JlZGl0IHRvIGh0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vYS8xMDE2MTMvMTMxODgwNzEKaW50IGlwb3coaW50IGJhc2UsIGludCBleHApCnsKICAgIGludCByZXN1bHQgPSAxOwogICAgd2hpbGUgKHRydWUpCiAgICB7CiAgICAgICAgaWYgKGV4cCAmIDEpCiAgICAgICAgICAgIHJlc3VsdCAqPSBiYXNlOwogICAgICAgIGV4cCA+Pj0gMTsKICAgICAgICBpZiAoZXhwID09IDApCiAgICAgICAgICAgIGJyZWFrOwogICAgICAgIGJhc2UgKj0gYmFzZTsKICAgIH0KCiAgICByZXR1cm4gcmVzdWx0Owp9Cgpkb3VibGUgcm91bmRfcHJlYyhkb3VibGUgbiwgaW50IHByZWMpCnsKICAgIHJldHVybiBzdGQ6OnJvdW5kKG4gKiBpcG93KDEwLCBwcmVjKSkgLyBpcG93KDEwLCBwcmVjKTsKfQoKaW50IG1haW4oKQp7CiAgICBzdGQ6OmNvdXQgPDwgc3RkOjpzZXRwcmVjaXNpb24oMjApIDw8IHJvdW5kX3ByZWMoMy4xNDE1LCAyKSA8PCAnXG4nOwp9