Gibt es eine einfache, pythische Art der Rundung auf die nächste ganze Zahl, ohne Gleitkommazahl zu verwenden? Ich möchte die folgenden aber mit Integer-Arithmetik tun:Runde mit ganzzahliger Division
skip = int(round(1.0 * total/surplus))
==============
@John: Gleitpunkt ist nicht reproduzierbar über Plattformen hinweg. Wenn Sie möchten, dass Ihr Code Tests über verschiedene Plattformen hinweg durchführt, dann müssen Sie Gleitkommazahlen vermeiden (oder fügen Sie Ihren Tests etwas Hacky-Espilon-Zeug hinzu und hoffen, dass es funktioniert). Das Obige mag einfach genug sein, dass es auf den meisten/allen Plattformen dasselbe sein würde, aber ich möchte diese Bestimmung lieber nicht machen, da es einfacher ist, Gleitkommazahlen ganz zu vermeiden. Wie ist das "nicht im Geiste von Python"?
@John: Naja, Longs in Python können beliebig große Werte speichern, bei denen Gleitkommazahlen fest eingestellt sind - also gibt es Kosten in Reichweite, Komplexität und mögliche Fehler, die Gleitkommazahlen in Integer-Operationen einführen. Ich wünschte, die Leute würden aufhören, jede Frage mit dem albernen Schlagwort "Pythonic" zu bestreuen. –
@GlennMaynard Wahr! Es ist nicht sehr pythisch. –