I'm currently marvelling over this:

**C++ 11**

```
#include <iostream>
#include <iomanip>
#include <limits>

int main()
{
  double d = 1.305195828773568;
  std::cout << std::setprecision(std::numeric_limits<double>::max_digits10) << d << std::endl;
  // Prints  1.3051958287735681
}

```

**Python**

```
>>> repr(1.305195828773568)
'1.305195828773568'

```

What's going on, why the extra 1 in C++?

So far I thought that C++ and Python use the same 64 bit IEEE doubles under the hood; both formatting functions are supposed to print the full precision.