В настоящее время я удивляюсь этому:
С++ 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'
Что происходит, почему дополнительный 1 в С++?
До сих пор я думал, что С++ и Python используют один и тот же 64-битный IEEE-дубликат под капотом; обе функции форматирования должны печатать полную точность.