Frage von markusstar2222, 32

In Python schöne gerundete Zahlen herausbekommen?

Ich habe mir mithilfe des Pythons einen Umrechner programmiert der Euro zu Dollar umrechnet es kommen jedoch nur Werte wie 1.5789764654672 heraus, wie kann ich schöne gerundete Werte wie 1.56 erhalten ? Danke schon mal im Vorraus !

Hilfreichste Antwort - ausgezeichnet vom Fragesteller
von TeeTier, 23

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ß! :)

Kommentar von Schachpapa ,

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.

Antwort
von PeterLustig1999, 18

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.

Kommentar von TeeTier ,

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

Kommentar von PeterLustig1999 ,

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

Kommentar von Schachpapa ,

auch wenn Python nicht unbedingt eine richtige Programmiersprache ist

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

Kommentar von PeterLustig1999 ,

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.

Antwort
von Schachpapa, 11

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!



Keine passende Antwort gefunden?

Fragen Sie die Community

Weitere Fragen mit Antworten