Die meisten "Fließkomma" sind falsche Fragen beziehen sich auf den Unterschied zwischen der Formatierung und der internen Darstellung eines Fließkommas. Der Computer kann das "formatierte" Gleitkomma nicht genau darstellen.
Zu beachten ist, welche Art von Fließkomma ich verwende, zum Beispiel könnten Sie hier prüfen, ob Sie ein float32 oder float64
Array verwenden. Sie können dies überprüfen, indem Sie eingeben:
covariance.dtype
Sie können festlegen, die Details, wie die Werte gedruckt mit den set_printoptions
function von numpy. Stellen Sie außerdem sicher, dass Sie wissen, wie Gleitkommawerte printed in verschiedenen Python-Versionen sind.
Dies ist, was man ein „reproduzierbar“ Beispiel nennen würde:
import numpy as np
covariance = np.array(
[
[1.96330748e-05, 2.39329295e-05],
[2.39329295e-05, 1.05846999e-04]
],
dtype="double"
)
print(covariance[1, 1])
print(repr(covariance[1, 1]))
print("{:.20f}".format(covariance[1, 1]))
beta = covariance[0, 1]/covariance[1, 1]
print("{:.20f}".format(beta))
# this generates the "wrong" answer you mention in the comments under your answer.
wrong_beta = covariance[0, 1]/covariance[0, 0]
print("{:.20f}".format(wrong_beta))
Wenn ich es unter jupyter mit python3.5 laufen erhalte ich:
0.000105846999
0.000105846999
0.00010584699900000000
0.22610872038044271815
1.21901076340828695699
Wenn ich es unter Python-Konsole ausführen Ich bekomme die gleiche Antwort.
Die beiden sind gleich. Der einzige Unterschied ist, wie * numpy und Python Fließkommapunkte darstellen. –
ja, aber warum, wenn ich Kovarianz [0,1] mache, bekomme ich 2.39329295e-05 und kann nicht 1.05846999e-04 mit Kovarianz [1,1] bekommen? –
Da Python die wissenschaftliche Notation verwendet, wenn der Wert kleiner als 1e-4 ist. Es ist ziemlich hässlich, 0.000000000011231211414 zu schreiben. –