Warum ist 9007199254740993 != 9007199254740993.0?Python

Python-Programme
Anonymous
 Warum ist 9007199254740993 != 9007199254740993.0?

Post by Anonymous »

Das Ergebnis dieses Vergleichs hat mich überrascht (CPython 3.4):

Code: Select all

>>> 9007199254740993 == 9007199254740993.0
False
Mein Verständnis der Dokumente ist, dass der linke Operand in Float umgewandelt werden sollte, um dem Typ des rechten Operanden zu entsprechen:

Python unterstützt vollständig gemischte Arithmetik: Wenn ein binärer arithmetischer Operator Operanden unterschiedlicher numerischer Typen hat, wird der Operand mit dem „schmaleren“ Typ auf den des anderen erweitert, wobei die Ganzzahl schmaler als die Gleitkommazahl ist. Das ist schmaler als komplex. Vergleiche zwischen Zahlen gemischten Typs verwenden dieselbe Regel.

Dies scheint nicht zu passieren:

Code: Select all

>>> float(9007199254740993) == 9007199254740993.0
True
Was ist hier los?

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post