2 minute read

Introduction

The std::round function is a useful function that returns the number rounded to the nearest integer for our C++ program. However, we can often get errors from the compiler such as:

error: ‘round’ is not a member of ‘std’

This error is pretty straight-forward to fix as we will see below.

Potential causes

The round is not a member of std error could be caused by multiple reasons.

Fix #1: Add cmath to your depedencies

Essentially, the std::round function needs to have access to the cmath module in order to be executed by the compiler.

Therefore, you must add the following #include header to the top of your code (in the include(s) part) such as:

#include <cmath> //Add this
#include <iostream>

int main() {
    double x = 21.14;
    std::cout << std::round(x) << std::endl; //Returns 21

    return 0;
}

The compiler should now recognize the std::round function, thus fixing the round is not a member of std error.

Fix #2: Using nearbyint

If you are using C++11 or later, you can use the std::nearbyint function.

#include <cmath>
#include <iostream>

int main() {
    double x = 21.14;
    std::cout << std::nearbyint(x) << std::endl; //Returns 21

    return 0;
}

This function is equivalent to std::round and it is part of the cmath library

Fix 32: Using namespace std

Note that we have previously typed: std::round instead of round. We can type “round” only if we are declaring that we are using its namespace.

In other words, we would need to type “using namespace std” in the header if we only want to type round (which is obviously shorter) instead of std::round. For instance, we can have something like:


#include <cmath>
#include <iostream>
using namespace std;

int main() {
    double x = 21.14;
    std::cout << `std::round`(x) << std::endl; //Returns 21

    return 0;
}

It is okay to type std::round without typing “using namespace std”. In fact, it is generally recommended to type the full std::round function name (and therefore avoiding using namespace std) when working with multiple libraries because it can reduce future confusion.

However, if you still want to type “round” instead of “std::round”, then you need to add “using namespace std” to the header.

Conclusion

In this article, we have shown you how to fix the round is not a member of std error by including the cmath library and using the std::round or std::nearbyint function. Always check that you are using the correct library and function name.

References

Read more about the std::round function here: https://en.cppreference.com/w/cpp/numeric/math/round