Ich arbeite täglich mit Python 2.4 bei meiner Firma. Ich benutzte die vielseitige Logarithmusfunktion 'log' aus der Standard-Mathematikbibliothek, und als ich log (2 ** 31, 2) eingab, gab es 31,000000000000004 zurück, was mir etwas merkwürdig vorkam.Inakkurate Logarithmus in Python
Ich tat das gleiche mit anderen Potenzen von 2, und es hat perfekt funktioniert. Ich lief 'log10 (2 ** 31)/log10 (2)' und ich bekam eine Runde 31.0
Ich versuchte, die gleiche ursprüngliche Funktion in Python 3.0.1 ausgeführt, vorausgesetzt, dass es in einer erweiterten Version behoben wurde.
Warum passiert das? Ist es möglich, dass es in Python einige Ungenauigkeiten in mathematischen Funktionen gibt?
Duplikat der ewigen Frage Floating-Point (? warum bin ich Gleitkommafehler bekommen), kann nicht die besten doppelten Q finden zu schreiben, vielleicht kann jemand anderes. –
Ich sollte darauf hinweisen, dass Python 3 * nicht * den Gleitkommafehler behoben hat. Stattdessen verwendet die Druckausgabe einen intelligenten Algorithmus, um den beabsichtigten Gleitkommawert anstelle des Durchhangs anzuzeigen. –