Typenvergleich per float() oder int()

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
MacEvil
User
Beiträge: 52
Registriert: Mittwoch 21. Januar 2004, 21:40

Warum ist "5 == float(5)" true ?
Wenn ich float(5) schreibe wird 5.0 ausgegeben => "5 == 5.0" ist ebenfalls true.
Möge die Python-Community gedeihen
Dookie
Python-Forum Veteran
Beiträge: 2010
Registriert: Freitag 11. Oktober 2002, 18:00
Wohnort: Salzburg
Kontaktdaten:

Hi MacEvil,

weil 5 gleich 5.0 ist :wink:
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
MacEvil
User
Beiträge: 52
Registriert: Mittwoch 21. Januar 2004, 21:40

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 :wink:
Möge die Python-Community gedeihen
Dookie
Python-Forum Veteran
Beiträge: 2010
Registriert: Freitag 11. Oktober 2002, 18:00
Wohnort: Salzburg
Kontaktdaten:

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.

Code: Alles auswählen

>>> a = -6
>>> b = -6
>>> print a is b
False

Gruß

Dookie
MacEvil
User
Beiträge: 52
Registriert: Mittwoch 21. Januar 2004, 21:40

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
Möge die Python-Community gedeihen
Antworten