Seite 1 von 1

dict.__str__ komisches Verhalten

Verfasst: Donnerstag 6. August 2009, 09:56
von Igor der Schreckliche
Hallo zusammen!

Kann mir einer folgendes Phänomen erklären?

Code: Alles auswählen

Python 2.5.2 (r252:60911, Jul 31 2008, 17:28:52)
[GCC 4.2.3 (Ubuntu 4.2.3-2ubuntu7)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> a={1: 0.1}
>>> print a[1]
0.1
>>> print a
{1: 0.10000000000000001}
Es stellt für mich kein Problem dar, ich würde nur gerne wissen, warum das so ist.

Danke,

Igor :-)

Verfasst: Donnerstag 6. August 2009, 10:03
von EyDu
Klar:

Code: Alles auswählen

>>> print(0.1)
0.1
>>> repr(0.1)
'0.10000000000000001'
>>>
Und falls du die 1 am Ende meinst: http://de.wikipedia.org/wiki/Gleitkomma ... Grundlagen.

Verfasst: Donnerstag 6. August 2009, 10:04
von sma
`print` ruft `str` für das auszugebende Objekt auf. Das `dict.__str__` hingegen ruft `repr` für jedes Element auf. `float.__str__` und `float.__repr__` sind anders implementiert. Die erste Funktion rundet, die andere stellt die Zahl so (ungenau) da, wie sie ist.

Stefan

Verfasst: Donnerstag 6. August 2009, 10:10
von Igor der Schreckliche
EyDu hat geschrieben: Und falls du die 1 am Ende meinst: http://de.wikipedia.org/wiki/Gleitkomma ... Grundlagen.
Danke!

Verfasst: Donnerstag 6. August 2009, 10:33
von HerrHagen
Oder eine etwas spezifischere Begründung (hab ja nicht ohne Grund diesen Abschnitt übersetzt):
http://tutorial.pocoo.org/floatingpoint.html