Was gibt sys.float_info.epsilon
zurück?
Auf meinem System bekomme ich:
%Vor%Wie ist das möglich?
BEARBEITEN:
Es geht Ihnen gut, ich dachte, Epsilon tut was min tut. Also ich meinte eigentlich sys.float_info.min
.
EDIT2
Jeder und besonders John Kugelman, danke für deine Antworten!
Einige herumspielend habe ich getan, um Dinge zu mir selbst zu klären:
%Vor% Also epsilon * min
gibt die Zahl mit der kleinsten positiven Signifikanz (oder Mantisse) und dem kleinsten Exponenten an.
epsilon
ist die Differenz zwischen 1
und dem nächsten darstellbaren Float. Das ist nicht das Gleiche wie der kleinste Gleitkommawert, der der Anzahl von 0
und nicht von 1
am nächsten kommt.
Es gibt zwei kleinste Floats, abhängig von Ihren Kriterien. min
ist der kleinste normalisierte Float. Die kleinste subnormale Float ist min * epsilon
.
Beachten Sie den Unterschied zwischen normalisierten und subnormalen Gleitkommazahlen: min
ist nicht der kleinste Gleitkommawert, sondern nur der kleinste mit voller Genauigkeit. Subnormale Zahlen decken den Bereich zwischen 0
und min
ab, verlieren aber sehr viel Genauigkeit. Beachten Sie, dass 5e-324
nur eine signifikante Ziffer hat. Subnormale arbeiten auch langsamer, bis zu 100x langsamer als normalisierte Floats.
Diese Tests bestätigen, dass 5e-324
wirklich der kleinste Float ist. Division durch zwei Unterläufe auf 0.
Siehe auch: Was ist der Wertebereich, den ein Float in Python haben kann?
Sie wollen eigentlich sys.float_info.min
("minimum positive normalized float"), was mir auf der Maschine .2250738585072014e-308
gibt.
epsilon
ist:
Unterschied zwischen 1 und dem kleinsten Wert größer als 1, der als Float dargestellt werden kann
Weitere Informationen zu den Feldern von sys.float_info
.
Ihr letzter Ausdruck ist möglich, denn für jede echte, positive Zahl, 0 < num/2 < num
.
Von den Dokumenten :
Unterschied zwischen 1 und dem kleinsten Wert größer als 1, der als Float dargestellt werden kann
sys.float_info ist als
definiertUnterschied zwischen 1 und dem kleinsten Wert größer als 1 ist darstellbar als Float
auf dieser Seite .
Die Dokumentation definiert sys.float_info.epsilon
als
Unterschied zwischen 1 und dem kleinsten Wert größer als 1, der als Float dargestellt werden kann
Allerdings ist die Lücke zwischen aufeinanderfolgenden Floats für größere Floats größer, so dass die Lücke zwischen epsilon
und dem nächstkleineren Float viel kleiner ist als epsilon
. Insbesondere ist der nächst kleinere Float nicht 0.
Wie jede Antwort sagt, ist es der Unterschied zwischen 1
und dem nächstgrößeren Wert, der dargestellt werden kann. Wenn Sie versuchen, die Hälfte davon zu 1 hinzuzufügen, erhalten Sie 1 zurück
Wenn Sie zusätzlich versuchen, zwei Drittel davon zu 1
hinzuzufügen, erhalten Sie den gleichen Wert:
Tags und Links python python-2.7 epsilon