spezielles runden

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
Bykl
User
Beiträge: 92
Registriert: Donnerstag 5. Oktober 2017, 17:57

Hallo Specialisten ...

Wie runden geht hab ich verstanden, aber ich will was spezielles. Ich möchte eine Zahl, wenn sie einen Nachkommateil hat, aufrunden, eine andere abrunden, egal, wie der Nachkommatail ist, wo das normale round auch nicht ginge, sondern ich würde nur den Vorkommateil haben wollen.
In C++ würde ich das machen mit if x%y==0, dann int(x/7)+1 also xmody --- wie kann ich das in Python machen. Fraktion gibt es dort nicht.

Danke für die Tips...
__deets__
User
Beiträge: 14523
Registriert: Mittwoch 14. Oktober 2015, 14:29

Gibts schon alles. Es gibt den modulo Operator, es gibt divmod und es gibt math.ceil und floor.
Benutzeravatar
__blackjack__
User
Beiträge: 13071
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@Bykl: Was meinst Du mit „Fraktion gibt es dort nicht.“? Die ganzen C-Mathe-Funktionen sind im `math`-Modul, und für Brüche gibt es das `fractions`-Modul.

Den Modulo-Operator gibt's mit ``%`` für ganze Zahlen genau wie in C++ (allerdings: Vorsicht bei negativen Zahlen, und wenn 0 als zweiter Operand geht, dann hat C++ eine andere Auffassung von Teilen durch 0 als Python). Für Gleitkommazahlen gibt's `math.fmod()` allerdings auch hier kein Teilen durch 0 möglich, also suchst Du `math.modf()`.

Aufrunden wenn Nachkommaanteil: ``x = int(y) + 1 if math.modf(y)[0] else 0``. Nur Vorkommaanteil ist einfach `int()`.
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
Antworten