Ich werde mein Problem mit gutem Beispiel erklären:Abrundungsfunktion ist die Beseitigung Integer wissenschaftliche Notation, Python
>>> #In this case, I get unwanted result
>>> k = 20685671025767659927959422028/2580360422
>>> k
8.016582043889239e+18
>>> math.floor(k)
8016582043889239040
>>> #I dont want this to happen ^^, let it remain 8.016582043889239e+18
>>> #The following case though, is fine
>>> k2 = 5/6
>>> k2
0.8333333333333334
>>> math.floor(k2)
0
Wie kann ich machen Math.floor nicht die wissenschaftlichen Zahlen notiert Bodenbelag? Gibt es eine Regel, für die Zahlen in einer wissenschaftlichen Notation dargestellt werden (ich denke, es wäre eine gewisse Grenze).
EDIT:
Ich dachte zuerst, dass die Math.floor Funktion einen Genauigkeitsverlust verursacht wurde, aber es stellt sich heraus, dass die erste Berechnung selbst die Berechnung der Genauigkeit verloren, was wirklich verwirrt hatte mich,
>>> 20685671025767659927959422028/2580360422
8016582043889239040
>>> 8016582043889239040 * 2580360422
20685671025767659370513274880
>>> 20685671025767659927959422028 - 20685671025767659370513274880
557446147148
>>> 557446147148/2580360422
216.0342184739958
>>> ##this is >1, meaning I lost quite a bit of information, and it was not due to the flooring
mein Problem ist also jetzt, wie das tatsächliche Ergebnis der Division zu bekommen: es kann leicht hier zu sehen. Ich schaute auf den folgenden Thread: How to print all digits of a large number in python? Aber aus irgendeinem Grund habe ich nicht das gleiche Ergebnis erhalten.
EDIT: ich eine einfache Lösung für die Teilgenauigkeit Problem hier gefunden: How to manage division of huge numbers in Python? Anscheinend ist der //
Operator ein int
kehrt dann eher float
, die neben keine Größenbeschränkung muss der Speicher des Geräts.
_ "Ich denke, es wäre eine bestimmte Grenze" _. Ich denke nicht. Ich habe "999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999" in die interaktive Eingabeaufforderung eingegeben, und es zeigt das Ganze, obwohl es viel größer als 8e18 ist. – Kevin
@Kevin versuchen, es mit etwas zu teilen – GoldenSpecOps
Die Notation ist einfach eine visuelle Darstellung einer Zahl. Was eine Funktion als Parameter bekommt, ist die binäre Darstellung, die für alle Gleitkommazahlen gleich ist. – DyZ