Während der Programmierung bemerkte ich einen Unterschied zwischen dem Ergebnis von math.exp (2) und math.e ** 2. Wie Sie unten sehen können, tritt dieser Unterschied bei der Berechnung von e^1 nicht auf.Unterschied zwischen math.exp (2) und math.e ** 2
Da ich kein erfahrener Programmierer bin, habe ich mich gefragt, warum das anders ist? Ich nehme an, es hat etwas mit dem Aufrunden zu tun. Die Python-Dokumentation sagt, dass math.exp(x)
e**x
zurückgeben, aber dies scheint nicht genau richtig zu sein. Wie kommt es, dass die math.exp(x)
Operation unterscheidet sich von math.e**x
?
>>> math.exp(1)
2.718281828459045
>>> math.e**1
2.718281828459045
>>> math.exp(1)==math.e**1
True
>>> math.exp(2)
7.38905609893065
>>> math.e**2
7.3890560989306495
>>> math.exp(2)==math.e**2
False
>>> math.exp(100)
2.6881171418161356e+43
>>> math.e**100
2.6881171418161212e+43
>>> math.exp(100)==math.e**100
False
Related: http://stackoverflow.com/a/15322395/1639625 Meine Vermutung: 'math.exp' ist in' c' (oder sogar in Hardware) implementiert und hat daher etwas anderes Fließkommaverhalten. –
Abstimmung zum erneuten Öffnen. Hier ist mehr los als einfach "Gleitkomma ist ungenau". Insbesondere, wie die beiden Antworten erklären, gibt es gute Gründe zu erwarten, dass exp (x) genauer ist als e x. –