Kann jemand bitte erklären, warum das Folgende passiert?Warum wird -0.0 gedruckt?
print(-1 * (605 % 11)) #-> 0
print(-1 * (0.5*1210 % 11)) #-> -0.0
print(-1 * (0.5*1210) % 11) #-> 0.0
Vor allem die -0.0
ist rätselhaft ..
Kann jemand bitte erklären, warum das Folgende passiert?Warum wird -0.0 gedruckt?
print(-1 * (605 % 11)) #-> 0
print(-1 * (0.5*1210 % 11)) #-> -0.0
print(-1 * (0.5*1210) % 11) #-> 0.0
Vor allem die -0.0
ist rätselhaft ..
print(-1 * (605 % 11)) #-> 0
Integer-Arithmetik. Keine Überraschungen hier.
print(-1 * (0.5*1210 % 11)) #-> -0.0
Hier können Sie überrascht werden. 0.5*1210 % 11
wertet den Gleitkomma-Nullwert aus, und dann -1 * 0.0
Ergebnisse in negative Null, die eine Sache in Fließkomma ist. Es existiert, weil es Edge-Fälle einiger numerischer Algorithmen einfacher zu implementieren macht.
Hier ist jemand, der mit Floating-Point vertrauter ist als mit Python. -1 * (0.5*1210)
wertet -605.0
, aber dann in -605.0 % 11
, definiert Python die %
Operation als Rückgabe eines Ergebnisses des gleichen Zeichens wie der Nenner, anstatt den Zähler, so dass 0.0
anstelle von -0.0
zurückgegeben wird.
Warum sollte nicht -0.0 gedruckt werden? Das bekommst du, wenn du 0.0 mit -1 multiplizierst. – Kevin
Schritt durch die Reihenfolge der Operationen, Operator Vorrang, usw. – davedwards
weil es einen Gleitkommawert und keine ganze Zahl? – Olian04