628 Stimmen

Wie rundet man auf 2 Dezimalstellen mit Python?

Ich erhalte viele Dezimalstellen im Ausgabewert dieses Codes (Fahrenheit in Celsius Umwandler).

Mein aktueller Code sieht so aus:

def main():
    printC(formeln(typeHere()))

def typeHere():
    global Fahrenheit
    try:
        Fahrenheit = int(raw_input("Hallo! Gib den Fahrenheit-Wert ein und erhalte ihn in Celsius!\n"))
    except ValueError:
        print "\nDeine Eingabe war keine Zahl!"
        print "Wir haben deinen Fahrenheit-Wert auf 50 gesetzt!"
        Fahrenheit = 50
    return Fahrenheit

def formeln(c):
    Celsius = (Fahrenheit - 32.00) * 5.00/9.00
    return round(Celsius, 2)

def printC(answer):
    answer = str(answer)
    print "\nDein Celsius-Wert beträgt " + answer + " C.\n"

main()

Also meine Frage ist, wie kann ich das Programm dazu bringen, jede Antwort auf die 2. Dezimalstelle zu runden?

1026voto

rolisz Punkte 9714

Sie können die round Funktion verwenden, die als ersten Argument die Zahl und als zweites Argument die Genauigkeit nach dem Dezimalpunkt benötigt.

In Ihrem Fall wäre es:

antwort = str(round(antwort, 2))

208voto

Johnsyweb Punkte 128606

Mit str.format()'s Syntax wird answer mit zwei Dezimalstellen angezeigt (ohne den zugrunde liegenden Wert von answer zu ändern):

def printC(answer):
    print("\nDein Celsius-Wert beträgt {:0.2f}ºC.\n".format(answer))

Wo:

  • : führt die Formatspezifikation ein
  • 0 aktiviert das Vorzeichenbezogene Null-Auffüllen für numerische Typen
  • .2 setzt die Präzision auf 2
  • f zeigt die Zahl als Festkommazahl an

91voto

s4w3d0ff Punkte 1121

Die meisten Antworten schlugen round oder format vor. round rundet manchmal auf, und in meinem Fall benötigte ich den Wert meiner Variablen, der abgerundet werden musste und nicht nur so angezeigt wurde.

round(2.357, 2)  # -> 2.36

Ich habe die Antwort hier gefunden: Wie rundet man eine Gleitkommazahl auf eine bestimmte Dezimalstelle?

import math
v = 2.357
print(math.ceil(v*100)/100)  # -> 2.36
print(math.floor(v*100)/100)  # -> 2.35

oder:

from math import floor, ceil

def roundDown(n, d=8):
    d = int('1' + ('0' * d))
    return floor(n * d) / d

def roundUp(n, d=8):
    d = int('1' + ('0' * d))
    return ceil(n * d) / d

66voto

Jack Punkte 4528

Wenn Sie nur das gerundete Ergebnis ausgeben möchten, können Sie die seit Python 3.6 eingeführten f-strings verwenden. Die Syntax ist die gleiche wie die str.format()'s Formatstring-Syntax, außer dass Sie ein f vor den Literalstring setzen und die Variablen direkt im String innerhalb der geschweiften Klammern platzieren.

.2f gibt das Runden auf zwei Dezimalstellen an:

number = 3.1415926
print(f"Die Zahl gerundet auf zwei Dezimalstellen ist {number:.2f}")

Ausgabe:

Die Zahl gerundet auf zwei Dezimalstellen ist 3.14

64voto

Satyaki Sanyal Punkte 1211

Sie können die round-Funktion verwenden.

round(80.23456, 3)

wird Ihnen eine Antwort von 80.234 geben

In Ihrem Fall verwenden Sie

antwort = str(round(antwort, 2))

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X