Seite 1 von 1

spezielles runden

Verfasst: Freitag 18. Januar 2019, 19:29
von Bykl
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...

Re: spezielles runden

Verfasst: Freitag 18. Januar 2019, 19:59
von __deets__
Gibts schon alles. Es gibt den modulo Operator, es gibt divmod und es gibt math.ceil und floor.

Re: spezielles runden

Verfasst: Freitag 18. Januar 2019, 20:55
von __blackjack__
@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()`.