ich zur Zeit über diese staunte:Precision Unterschied beim Drucken Python und C++ verdoppelt
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'
Was ist los, warum die extra 1 in C++?
Bisher dachte ich, dass C++ und Python die gleichen 64-Bit-IEEE-Doubles unter der Haube verwenden; Beide Formatierungsfunktionen sollen die volle Präzision drucken.
Beachten Sie, dass * die * Eigenschaft von 'repr' ist:' eval (repr (x)) == x '** nicht **, dass Zahlen mit allen Dezimalziffern gedruckt werden. Wenn Sie eine Genauigkeit von 'k' wünschen, sollten Sie eine korrekte Formatierungsfunktion verwenden. – Bakuriu