Programlama sırasında math.exp (2) ve math.e ** 2 sonuçları arasında fark olduğunu farkettim. Aşağıda görebileceğiniz gibi, e^1 hesaplanırken bu fark ortaya çıkmaz.math.exp (2) ve math.e ** arasındaki fark 2
Tecrübeli bir programcı olmamasından dolayı bunun neden farklı olduğunu merak ettim. Yuvarlama ile ilgili bir şey olduğunu varsayalım. Python docs, math.exp(x)
'un e**x
döndürdüğünü söylüyor, ancak bu tam olarak doğru değil gibi görünüyor. Peki, math.exp(x)
işleminin math.e**x
'dan farkı nedir?
>>> 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
İlgili: http://stackoverflow.com/a/15322395/1639625 Tahminim: 'math.exp', c'de (veya hatta donanımda) uygulanır ve bu nedenle biraz farklı kayan nokta davranışı vardır. –
Yeniden açılmak için oylama. Burada daha çok "kayan nokta yanlış" olmaktan daha fazlası var. Özellikle, iki cevap açıkladığı gibi, exp (x) 'inin e ** x'den daha doğru olmasını beklemek için iyi sebepler vardır. –