2016-12-10 8 views
-1

Wie füge ich 2,50 zu den Kosten hinzu?Hinzufügen einer Zahl mit 2 Dezimalstellen zu einer Variablen (2.50)

es jetzt druckt er nur aus als 2.

cost = 0.00 

r = open("toppings.txt") 

bases = ["small","medium","large"] 

toppings = ["Pepperoni","Chicken","Cajun Chicken","Mushrooms", 
      "Red Onions","Sweetcorn","Ham","Cheese","Spicy Minced Beef", 
      "Anchovies","Tuna","Peppers","Jalapenos","Green Chillies"] #0-13 

def small(): 

    current = cost + 2.50 

    print("Your current total cost is " + "£" + str(int(current))) 
+0

int (strom) entfernen und str (strom) direkt verwenden. –

+5

Nun entfernen Sie einfach die int() – DZDomi

+0

'print (" Ihre aktuellen Gesamtkosten sind £% 2f "% Strom)' – Bodhi94

Antwort

3

Es gibt zwei Probleme:

  • Sie verlieren die Dezimalstellen, sobald Sie es zu einem int in int(current) konvertieren.
  • Wenn Sie immer zwei Dezimalstellen haben möchten, müssen Sie eine Art von String-Formatierung verwenden.

Ich würde nur raten zu verwenden str.format mit „2“ Dezimalstellen (hier durch die .2f erzwungen):

'Your current total cost is £ {:.2f} '.format(current) 

Wenn Sie mit „Geld“ -ähnlichen Variablen arbeiten sollten Sie decimal.Decimal verwenden statt Floats, nur damit Sie sich nicht um die "Ungenauigkeit" von Fließkommazahlen kümmern müssen.

2

Sie konvertieren Ihre Schwimmer Menge Strom Rechnung in dieser Zeile

print("Your current total cost is " + "£" + str(int(current))) 

Statt int diesen Befehl verwenden, um Ihre aktuelle Rechnung drucken Menge.

print("Your current total cost is " + "£" + "{0:.2f}".format(round(current,2))) 

Ausgang

Your current total cost is £5.50 
0

int dreht eine Zahl in eine ganze Zahl. Zum Beispiel int(2.1) = 2

Ihre letzte Zeile sollte nur str(current) haben.

print("Your current total cost is " + "£" + str(current)) 
Verwandte Themen