Problem mit Log10 (x) und genaue Wiederherstellung großer Zahlen genau wiederherstellen

Post a reply

Smilies
:) :( :oops: :chelo: :roll: :wink: :muza: :sorry: :angel: :read: *x) :clever:
View more smilies

BBCode is ON
[img] is ON
[flash] is OFF
[url] is ON
Smilies are ON

Topic review
   

Expand view Topic review: Problem mit Log10 (x) und genaue Wiederherstellung großer Zahlen genau wiederherstellen

by Anonymous » 10 May 2025, 22:14

Ich habe ein Problem mit der Verwendung von Log10 (x), um große Zahlen zu komprimieren. Wenn ich eine große Zahl mit Math.Log10 (x) konvertiere und dann versuche, sie mit 10 ** log10 (x) wiederherzustellen, erhalte ich immer ein Ergebnis, das aufgrund der ursprünglichen Zahl aufgrund von schwimmenden Punkt-Präzisionsgrenzen etwas anderes unterscheidet.import math

original = 1180591620810475438080
log_value = math.log10(original)
recovered = 10 ** log_value

print(f"Original: {original}")
print(f"log10(x): {log_value}")
print(f"Recovered: {recovered}")
print(f"Difference: {abs(original - recovered)}")
< /code>
Ausgabe: < /p>
log10(x): 21.072099696512918
Recovered: 1.1805916208104748e+21
Difference: 786432.0
< /code>
Manchmal ist der Unterschied gering, aber wenn ich mit extrem großen Werten arbeite oder eine hohe Genauigkeit benötige, wird dieser kleine Fehler signifikant. < /p>
Gibt es eine Möglichkeit, diesen Unterschied zu kontrollieren oder zu minimieren? Vielleicht mit Bibliotheken mit höherer Präzision wie Dezimal- oder MPMath oder völlig unterschiedliche Ansätze, um große Zahlen mit weniger Verlust in einen kleineren Raum zuzuordnen?
Danke im Voraus!

Top