Ich bin erstaunt über die zweite Reihe Sie erwähnen (und bestätigen durch Ihre geforderte Rundung) - zuerst dachte ich, mein Instinkt für Kopfrechnen würde mich im Stich lassen (I am wird schließlich älter, so dass es genauso gehen könnte wie meine einst so scharfe Erinnerung! -) ... aber dann habe ich bestätigt, dass es noch nicht funktioniert, indem ich Python 3.1 benutze, wie ich es dir vorstelle, und das Kopieren und Einfügen ..:
>>> def input_meal():
... mealPrice = input('Enter the meal subtotal: $')
... mealPrice = float (mealPrice)
... return mealPrice
...
>>> def calc_tax(mealPrice):
... tax = mealPrice*.06
... return tax
...
>>> m = input_meal()
Enter the meal subtotal: $34.45
>>> print(calc_tax(m))
2.067
>>>
... wie erwartet - doch, Sie sagen, dass es statt „gibt eine Anzeige von $ 2.607“ ... die ein Tippfehler sein könnten, nur zwei Ziffern tauschen, außer dass du dann fragst "Wie kann ich das stattdessen auf $ 2.61 setzen?" so scheint es wirklich Sie wirklich 2.607
(die auf 2,61 auf verschiedene Arten gerundet werden könnte) und definitiv nicht das arithmetisch korrekte Ergebnis, 2.067
(die bestenfalls auf 2,07 abgerundet werden kann ... definitiv nicht bis 2,61 wie Sie anfordern) .
Ich stelle mir vor, Sie hatten zuerst den Tippfehler in der Transkription auftreten, und dann mental berechnet die gewünschte Rundung aus der Falsified-by-Typo 2.607
und nicht das eigentliche ursprüngliche Ergebnis - ist das passiert? ! Es gelang mir sicher, für eine Weile zu verwirren -)
, Wie auch immer einen Schwimmer auf zwei Dezimalstellen zu runden, einfachste Ansatz ist die integrierte Funktion round mit einem zweiten Argument von 2
:
>>> round(2.067, 2)
2.07
>>> round(2.607, 2)
2.61
für Zahlen exakt im gleichen Abstand zwischen zwei Möglichkeiten, es rundet-to-even:
>>> round(2.605, 2)
2.6
>>> round(2.615, 2)
2.62
oder, wie die docs legte es (mit der einzigen Argumente Form round
Ausführungs, die auf den nächsten runden in Teger):
wenn zwei Vielfachen gleich nahe sind, wird in Richtung auf die Rundungs sogar Wahl gemacht (so zum Beispiel sowohl round (0,5) und runde (-0,5) ist 0, und round (1,5) ist 2).
jedoch für Berechnungen auf Geld, Ich zweite Empfehlung, die bereits in anderen Antworten gegeben, um mit dem, was die decimal Modul bieten, statt float
Zahlen.
Janet, FYI, Sie brauchen eine leere Zeile vor Ihren Code-Abschnitten. Oder markieren Sie sie einfach und klicken Sie auf die Schaltfläche "1010". (Dieses Mal habe ich den Einzug für Sie behoben) – Stephen