Es war eine Geschichte, die ich in eine Falle tappen wollte, als ich in meinem Unternehmen eine Testberechnung mit Python implementierte.
"Oh, ich werde dir sagen, was gerade passiert ist!"
** "Ich dachte, ich würde" 2.5 "auf" 3 "abrunden, aber bevor ich es wusste, war es" 2 "" **
"Nun, ich weiß nicht wovon du sprichst, aber ich wusste nicht was du tust ..."
"Wie hübsch mein Kopf war ... Wenn es ein Berechnungsfehler oder ein Missverständnis ist, ist es so eine chaotische Sache. Ich habe etwas gruseligeres geschmeckt ... "
Wie ich bereits sagte, wollte ich in Python abrunden.
Das erste, was mir in den Sinn kommt ** runde Funktion ** ** Formatierungsfunktion **
"Nun, wenn du es hier und da benutzt, kannst du es dir leisten."
Der Gedanke war plötzlich erschüttert ...
>>> k=2.5
>>> round(k)
2
"e"
Zu dieser Zeit war mein Gehirn voller Misstrauen gegenüber der Rundung, die ich damals in der Schulpflicht hätte lernen sollen.
** "Wann hast du die Illusion bekommen, dass 2,5 durch Runden 3 sein würde?" **
Nein nein Nein Nein
Wenn Sie "2.5" abrunden, ist es "3".
Aber wieso?
Versuchen wir es mit der Formatierungsfunktion
>>> format(k, '.0f')
'2'
Wie. Bist du ein Guru?
Aber wieso?
Wenn ich nachschaue Diese Person untersuchte und schlug ebenfalls eine ** Lösung ** vor. ↓ ↓ ↓ Hinweis, weil ich süchtig nach Rundung von Python3 war
In diesem Artikel wurde festgestellt, dass die Ursache ** auf die nächste gerade Zahl ** gerundet ** war.
Auf das nächste Gerade runden [Bearbeiten] Auf die nächste Gerade gerundet (RN) wird abgerundet, wenn der Bruch kleiner als 0,5 ist, aufgerundet, wenn der Bruch größer als 0,5 ist, abgerundet oder aufgerundet, wenn der Bruch genau 0,5 ist, je nachdem, welche Ergebnisse gerade sind. Roll to. Es ist in JIS Z 8401 als Regel A definiert und wird nach Regel B (Rundung) als "wünschenswert" angesehen. Rundung verursacht eine Verzerrung. Selbst wenn es einen endlichen Anteil von Daten mit einem Bruchteil von 0,5 gibt, gibt es keine Verzerrung, und selbst wenn eine große Anzahl hinzugefügt wird, akkumuliert sich der Rundungsfehler nicht auf eine bestimmte Seite vorgespannt (gerade +). Wenn die Daten Eigenschaften wie 0,5 aufweisen, aber ungerade +0,5 nicht angezeigt werden, wird weiterhin eine Verzerrung angezeigt. Siehe auch: Wikipedia-Bruch
Es scheint, dass 0,5 auf Python2 aufgerundet werden kann Python 3 ist so.
Mit anderen Worten Wenn Sie "2,5" einstellen, wird auf der geraden Seite "2" angezeigt.
Wenn Sie es also mit "3.5" machen, ist es "4".
>>> k=3.5
>>> round(k)
4
Wo ist die Nachfrage nach dieser Spezifikation ...
@ Shiracamus schlug eine Lösung für den Artikel vor, den ich zuvor vorgestellt hatte.
def round(x):
return (x*2+1)//2
def round(x,d=0): #Tun Sie dies, wenn Sie die Anzahl der Ziffern angeben
p=10**d
return (x*p*2+1)//2/p
Das hat es gelöst. @ sak_2 @ Shiracamus Vielen Dank.
Bitte seien Sie auch vorsichtig.
Recommended Posts