Seite 1 von 1

Allgemeine Frage zu float und int Zahlen/Umwandlungen

Verfasst: Montag 21. April 2014, 12:37
von duodiscus
Frohe Ostern zusammen,
wenn ich eine float-Zahl (z.B. 2.7) in eine int-Zahl konvertieren möchte, wird dabei gerundet. Das Ergebnis wäre 2. Welchen Wert muss man denn dann einer FLoat-Zahl x addieren, um beispielsweise eine kaufmännische Rundung von x zu erreichen.

Also das meine ich: 2.7 -> gerundet zu 3 oder 2.3 -> gerundet zu 2

Könnt Ihr mir da weiterhelfen? Vielen Danke für Antworten!

Re: Allgemeine Frage zu float und int Zahlen/Umwandlungen

Verfasst: Montag 21. April 2014, 12:58
von anogayales
Hallo duodiscus,

addiere einfach 0.5 zu der Zahl bevor du int anwendest: z.B: int(2.3+0.5)

oder benutze die Funktion round(). Aber Achtung, soweit ich weiß ändert round ab Python 3 sein Verhalten.

Grüße,
anogayales

Re: Allgemeine Frage zu float und int Zahlen/Umwandlungen

Verfasst: Montag 21. April 2014, 13:00
von cofi
Wenn du kaufmaennisch runden willst, suchst du `round`:

Code: Alles auswählen

In [3]: int(round(2.7, 0))
Out[3]: 3

In [4]: int(round(2.3, 0))
Out[4]: 2

In [5]: int(round(2.5, 0))
Out[5]: 3
Fuer die ganz allgemeine Frage, wie viel man addieren muss, man eben den Rest heranziehen:

Code: Alles auswählen

In [6]: 2.3 % 1
Out[6]: 0.2999999999999998
Und daran eine Fallunterscheidung machen.

Re: Allgemeine Frage zu float und int Zahlen/Umwandlungen

Verfasst: Montag 21. April 2014, 13:02
von Sirius3
@anogayales: die Variante mit +0.5 funktioniert bei negativen Zahlen nicht. round liefert ein float als Ergebnis, man muß es also noch zusätzlich in ein int wandeln.

Re: Allgemeine Frage zu float und int Zahlen/Umwandlungen

Verfasst: Dienstag 22. April 2014, 16:20
von duodiscus
cofi hat geschrieben:
Fuer die ganz allgemeine Frage, wie viel man addieren muss, man eben den Rest heranziehen:

Code: Alles auswählen

In [6]: 2.3 % 1
Out[6]: 0.2999999999999998
Und daran eine Fallunterscheidung machen.
Und woran kann man das jetzt allgemein erklären? :?:

Re: Allgemeine Frage zu float und int Zahlen/Umwandlungen

Verfasst: Dienstag 22. April 2014, 17:07
von cofi
Was meinst du damit? Der Rundungsmodus ist nicht mehr als eine Fall-Unterscheidung nach den Zahlen nach dem Komma.

Re: Allgemeine Frage zu float und int Zahlen/Umwandlungen

Verfasst: Dienstag 22. April 2014, 17:30
von duodiscus
Ich verstehe nicht, wie mich das auf die Lösung der Frage bringt:
Welchen Wert ich einer Fließkommazahl x addieren muss, um einer kaufmännische Rundung dieser Zahl zu erreichen. Beispielsweise 2.7 zu 3. Da wäre der Divisionsrest 2.7%1= 0.700000000002. Aber das bringt mich ja nicht zur Lösung der Frage.

Re: Allgemeine Frage zu float und int Zahlen/Umwandlungen

Verfasst: Dienstag 22. April 2014, 17:43
von /me
duodiscus hat geschrieben:Ich verstehe nicht, wie mich das auf die Lösung der Frage bringt
Ich hingegen verstehe dein Problem nicht wirklich. Was an folgendem Beispiel ist denn nicht so, wie du es haben möchtest?

Code: Alles auswählen

>>> int(round(2.7))
3
>>> int(round(2.3))
2
Es gibt allerdings Unterschied zwischen Python 2 und Python 3. Unter Python 2 wird dir ein round(2.5) einen Wert von 3.0 liefern, unter Python 3 einen Wert von 2.