In Python schöne gerundete Zahlen herausbekommen?

3 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

Die Formatierung von "Schachpapa" ist zwar die bessere / modernere / empfohlene, aber Folgendes ist - wenn auch etwas veraltet - ein bisschen übersichtlicher:

print('%.2f' % zahl)

Außerdem bietet die round()-Funktion einen zweiten Parameter, mit dem man die gewünschten Nachkommastellen angeben kann:

print(round(zahl, 2))

Alle drei Methoden haben Vor- und Nachteile. Entscheide selbst, was deinen Anforderungen am ehesten entspricht!

Viel Spaß! :)
Schachpapa  06.10.2016, 20:22

Ehrlich gesagt, kannte ich bisher nur deine erste Version zur Formatierung. Da heutzutage Python-Neulinge wohl gleich mit Python3 einsteigen und ich immer noch bei 2.7 hängen geblieben bin, habe ich schnell nachgeschaut. Finde die klassische Version

"%.2f" % zahl

bzw.

"%4d %.2f" % ( ganzzahl, kommazahl)

auch einfacher. War mir nicht sicher, ob das noch funktioniert.

1

Ob es in python einfacher geht oder es vielleicht schon eine vordefinierte Funktion gibt, weiß ich nicht, aber ich denke, man kann es hier ähnlich wie in anderen Programmiersprachen machen.

def runden(x, n):
return float(int(x*(10.0**n)+0.5))/(10.0**n);

Dabei ist x die Zahl, die gerundet werden muss und n ist die Anzahl der Nachkommastellen. Hier wird durch die "+0.5" auch darauf geachtet, wann auf- und wann abgerundet werden muss.

Woher ich das weiß:Berufserfahrung – Hauptberuflich IT-Consultant, Informatikstudium
TeeTier  06.10.2016, 19:27

Die Standard round() Funktion von Python macht exakt das Gleiche, wie deine Implementierung? (siehe Beispiel aus meiner Antwort) :)

0
PeterLustig1999  06.10.2016, 19:35
@TeeTier

Gut zu wissen, dass es eine vordefinierte Funktion dafür gibt. Das ist nicht in jeder Programmiersprache so (auch wenn Python nicht unbedingt eine richtige Programmiersprache ist). Ich habe ehrlich gesagt erst gestern gelernt, wie man in Python schreibt, habe mich zuvor nie damit beschäftigt.

Angefangen habe ich (ironischerweise) mit C++, mit der Programmiersprache arbeite ich auch heute noch die meiste Zeit, da ich eine Vorliebe für effiziente Programmierung habe. Deswegen ging das mit dem Lernen von Python vermutlich auch so schnell. Ich wollte mich dieses Wochenende noch ein wenig mit tkinter beschäftigen, damit kann man ja auch Einiges machen.

Immerhin habe ich nun eine mögliche Implementierung der Funktion "round()" geliefert, ist ja auch mal ganz nett :D

0
Schachpapa  06.10.2016, 19:45
@PeterLustig1999

auch wenn Python nicht unbedingt eine richtige Programmiersprache ist

Welche Kriterien muss denn eine Programmiersprache erfüllen, damit du sie als richtig bezeichnest?

0
PeterLustig1999  06.10.2016, 20:07
@Schachpapa

Ich bezeichne eher Sprachen, die auch wirklich übersetzt werden und die effiziente Bearbeitung komplexer Aufgaben ermöglichen, als richtige Programmiersprachen, auch wenn das vielleicht nicht der offiziellen Definition einer Programmiersprache entspricht (falls so etwas überhaupt existiert). 

Da Python im Gegensatz zu beispielsweise C++ nicht übersetzt, sondern interpretiert wird und interpretierte Sprachen oftmals nicht unbedingt die effizientesten sind, würde ich Python eher als eine Scriptsprache als als eine Programmiersprache bezeichnen, auch wenn beides auf das Gleiche hinaus läuft, nämlich darauf, Daten einzugeben/einzulesen, zu verarbeiten und auszugeben.

Ich weiß nicht, inwiefern man meinen Gedankengang nachvollziehen kann, aber für mich ist das nicht das Gleiche. Deswegen unterscheide ich persönlich da gerne.

Dennoch denke ich, dass Python eine super Sprache ist, um in die Programmierung einzusteigen. Sie ist einfach zu handhaben, strukturiert, schön anzusehen, nicht schwer zu erlernen und sie erfordert nur wenig Vorkenntnisse in Sachen Programmierung, Betriebssysteme, Hardware, etc.

0

Die Zahl selbst würde ich nicht ändern, allenfalls die Darstellung.

Guck mal in die Doku unter Input/Output,

https://docs.python.org/3/tutorial/inputoutput.html

da findest du sowas:


print('The value of PI is approximately {0:.3f}.'.format(math.pi))


Da wird PI auf 3 Nachkommastellen gerundet. Für Währung runest du entsprechend auf 2.

Ausprobieren!