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!
Allgemeine Frage zu float und int Zahlen/Umwandlungen
-
- User
- Beiträge: 456
- Registriert: Mittwoch 15. April 2009, 14:11
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
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
- cofi
- Python-Forum Veteran
- Beiträge: 4432
- Registriert: Sonntag 30. März 2008, 04:16
- Wohnort: RGFybXN0YWR0
Wenn du kaufmaennisch runden willst, suchst du `round`:
Fuer die ganz allgemeine Frage, wie viel man addieren muss, man eben den Rest heranziehen:
Und daran eine Fallunterscheidung machen.
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
Code: Alles auswählen
In [6]: 2.3 % 1
Out[6]: 0.2999999999999998
Michael Markert ❖ PEP 8 Übersetzung ❖ Tutorial Übersetzung (3.x) ⇒ Online-Version (Python 3.3) ❖ Deutscher Python-Insider ❖ Projekte
Und woran kann man das jetzt allgemein erklären?cofi hat geschrieben:
Fuer die ganz allgemeine Frage, wie viel man addieren muss, man eben den Rest heranziehen:Und daran eine Fallunterscheidung machen.Code: Alles auswählen
In [6]: 2.3 % 1 Out[6]: 0.2999999999999998

- cofi
- Python-Forum Veteran
- Beiträge: 4432
- Registriert: Sonntag 30. März 2008, 04:16
- Wohnort: RGFybXN0YWR0
Was meinst du damit? Der Rundungsmodus ist nicht mehr als eine Fall-Unterscheidung nach den Zahlen nach dem Komma.
Michael Markert ❖ PEP 8 Übersetzung ❖ Tutorial Übersetzung (3.x) ⇒ Online-Version (Python 3.3) ❖ Deutscher Python-Insider ❖ Projekte
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.
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.
Ich hingegen verstehe dein Problem nicht wirklich. Was an folgendem Beispiel ist denn nicht so, wie du es haben möchtest?duodiscus hat geschrieben:Ich verstehe nicht, wie mich das auf die Lösung der Frage bringt
Code: Alles auswählen
>>> int(round(2.7))
3
>>> int(round(2.3))
2