Seite 1 von 1
Typenvergleich per float() oder int()
Verfasst: Dienstag 2. März 2004, 12:44
von MacEvil
Warum ist "5 == float(5)" true ?
Wenn ich float(5) schreibe wird 5.0 ausgegeben => "5 == 5.0" ist ebenfalls true.
Verfasst: Dienstag 2. März 2004, 13:28
von Dookie
Hi MacEvil,
weil 5 gleich 5.0 ist
Es werden nicht die Typen sondern die Werte verglichen. Du kannst Dir aber eine einfache Funktion schreiben die auch die Typen vergleicht.
Code: Alles auswählen
def is_same(a,b):
return a == b and type(a) == type(b)
Gruß
Dookie
Verfasst: Dienstag 2. März 2004, 13:28
von MacEvil
Ok, ich habe es bereits selber gefunden.
5 == float(5) ist true
5 is float(5) ist false
Der Vergleich mit "is" fuehrt zum Ziel
Edit : Oh, da hat ja der Dookie gleich geantwortet. Das mit dem type ist auch interessant
Verfasst: Dienstag 2. März 2004, 13:41
von Dookie
Vorsicht!!!
is vergleicht die Identität der Instanzen. Da Python kleine Werte (in Version 2.3) von -5 bis 100 intern in einer Liste speichert, bringt Dein Vergleich nur in diesem Bereich das erwartete Ergebnis.
Gruß
Dookie
Verfasst: Mittwoch 3. März 2004, 08:43
von MacEvil
Ja, das ist allerdings so, zum Glueck wusste ich es schon, dass is nur die Identitaet vergleicht, aber fuer Leser, die zbsp. ueber die Suchmaschine hierherkommen ist es ganz wichtig. Ich hatte nicht daran gedacht es zu erwaehnen
Auch n' Gruss