Fliesskommazahlen

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
Sango

Moin

Ich schreibe grade ein Statistik-Programm in Python und da ist mir ein etwas Seltsames Phänomen aufgefallen. Scheinbar werden Zahlen Standardmaessig nur als Ganzzahlige Werte ausgegeben, auch wenn das Ergebnis Nachkommastellen hat.

Z.B. 6/5=1 statt 1,2. Folgernd ergibt 5*(6/5)=5 statt 6.

Nun kann ich das natuerlich kompensieren wenn ich jede Zahl vorher in eine Fliesskommazahl wandel, nur ist das auf Dauer ziemlich muehselig und ich muesste nun auch mein Programm noch mal komplett prüfen.

Gibt es stattdessen eine möglichkeit Global zu erzwingen das bei Rechnungen immer Fliesskommazahlen als Ergebnis kommen?
jgollers
User
Beiträge: 42
Registriert: Freitag 29. November 2002, 12:23
Wohnort: Kirchlengern

Das ist das Standardverhalten von Python. Das Ergebnis einer Division aus Ganzzahlen ist auch immer eine Ganzzahl! In Python 3 soll sich dieses aber ändern.
Welche Pythonversion benutzt du denn? Wenn es Python 2.2 ist dann hilft vielleicht ein Blick auf die Seite

http://www.python.org/doc/current/whatsnew/node7.html

Wenn du in einem Modul die Zeile

from __future__ import division

einfügst, dann wird das Verhalten des Divisionsoperators geändert. Ich glaube diese Möglichkeit, ist daß was du suchst.
Sango

Jep, hilft. Danke für die schnelle antwort :)
ertlpott
User
Beiträge: 44
Registriert: Montag 14. April 2003, 16:05

du musst einfach bei der Rechnung nicht
sagen wir jetzt zum beispiel : 5/2
sondern 5/2.0
eingeben. dann ist das ergebnis eine Fließkommazahl.
anscheinende kapiert python nur dann, das du kommazahlen haben willst, wenn du mindestens eine der verwendeten zahlen mit den erwünschten kommastellen anschreibst

Simon
Voges
User
Beiträge: 564
Registriert: Dienstag 6. August 2002, 14:52
Wohnort: Region Hannover

ertlpott hat geschrieben:anscheinende kapiert python nur dann,
Wieso 'anscheinend'? Das Verhalten ist wohldokumentiert und entspricht dem Verhalten bei C, womit Python ja geschrieben wurde. Da war GvR die Nähe zu C wohl wichtiger, als ein Verhalten, dass so mancher vielleicht bei einer Division erwarten würde. 'Früher' konnte eben jeder C ;-)
Jan
RicmanX
User
Beiträge: 69
Registriert: Donnerstag 29. August 2002, 17:10
Wohnort: Erfurt
Kontaktdaten:

Naja, ansich find ich das schon gut so, weil oft braucht man auch einfach nur "wieoft passt das da rein" und dann käm mir ne float auch dumm... ich weiß abrunden :P Aber .0 is halt schneller als andersrum :)
Antworten