Was gibt sys.float_info.epsilon
zurück?Python Epsilon ist nicht die kleinste Zahl
Auf meinem System erhalte ich:
>>> sys.float_info.epsilon
2.220446049250313e-16
>>> sys.float_info.epsilon/2
1.1102230246251565e-16
>>> 0 < sys.float_info.epsilon/2 < sys.float_info.epsilon
True
Wie ist das möglich?
EDIT:
Alles in Ordnung sind, dachte ich epsilon tut, was min tut. Also meinte ich eigentlich sys.float_info.min
.
EDIT2
Jeder und vor allem John Kugelman, vielen Dank für Ihre Antworten!
Einige Spiel um Ich habe Dinge zu mir selbst zu klären:
>>> float.hex(sys.float_info.epsilon)
'0x1.0000000000000p-52'
>>> float.hex(sys.float_info.min)
'0x1.0000000000000p-1022'
>>> float.hex(1 + a)
'0x1.0000000000001p+0'
>>> float.fromhex('0x0.0000000000001p+0') == sys.float_info.epsilon
True
>>> float.hex(sys.float_info.epsilon * sys.float_info.min)
'0x0.0000000000001p-1022'
So gibt epsilon * min
die Zahl mit der kleinsten positiven Signifikanden (oder Mantisse) und dem kleinsten Exponenten.
Mein Beispiel funktioniert auf die gleiche Weise für sys.float_info.min anstelle von sys.float_info.epsilon überall. Wie erklärst du das? –
Alles, was kleiner ist als "min" ist subnormal. 'min * epsilon' ist der wahre kleinste Float. Wenn Sie es durch 2 teilen, wird es auf 0 unterschritten. –