Ich arbeite täglich mit Python 2.4 in meinem Unternehmen. Ich habe die vielseitige Logarithmusfunktion 'log' aus der Standard-Mathematik-Bibliothek verwendet, und als ich log(2**31, 2) eingegeben habe, hat sie 31.000000000000004 zurückgegeben, was mich etwas seltsam erschien.
Ich habe dasselbe mit anderen Potenzen von 2 gemacht, und es hat einwandfrei funktioniert. Ich habe 'log10(2**31) / log10(2)' ausgeführt und 31.0 erhalten.
Ich habe versucht, dieselbe originale Funktion in Python 3.0.1 auszuführen, in der Hoffnung, dass es in einer fortschrittlicheren Version behoben wurde.
Warum passiert das? Ist es möglich, dass es Ungenauigkeiten in mathematischen Funktionen in Python gibt?
0 Stimmen
Duplikat der immerwährenden Frage zu Gleitkommazahlen (warum erhalte ich Gleitkommazerros?), kann die beste Duplikatfrage nicht finden, vielleicht kann jemand anderes helfen.
0 Stimmen
Ich möchte darauf hinweisen, dass Python 3 den Gleitkommafehler nicht behoben hat. Stattdessen verwendet die Druckausgabe einen intelligenten Algorithmus, um den beabsichtigten Gleitkommawert anzuzeigen, anstelle des Fehlers.