Jestem obecnie zachwycając się nad tym:Precision różnica przy drukowaniu Python i C++ podwaja
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'
Co się dzieje, dlaczego dodatkowe 1 w C++?
Do tej pory myślałem, że C++ i Python używają tego samego 64-bitowego IEEE pod maską; obie funkcje formatowania mają wydrukować pełną precyzję.
Należy pamiętać, że * właściwością * repr jest: 'eval (repr (x)) == x' ** nie ** że cyfry są drukowane ze wszystkimi cyframi dziesiętnymi. Jeśli chcesz uzyskać dokładność cyfr dziesiętnych "k", powinieneś użyć odpowiedniej funkcji formatowania. – Bakuriu