Mathe-Fehler bei der Multiplikation von float-integer in python
def CalculateExchange(currency2,rate):
currencyamount1 = int(input("Enter the amount: "))
currencyamount2 = (currencyamount1 * rate)
print(currencyamount2,currency2)
Wenn die Multiplikation der Wechselkurs erhalten früher in das Programm, indem Sie die Anzahl eingegeben, indem der Benutzer, statt es ausgeben einer tatsächlichen Zahl, es ist nur Ausgänge der eingegebenen Betrag in form des Wechselkurses, z.B. wenn der Wechselkurs ist 5 und der Betrag eingegeben ist 6 es wird nur Ausgang 6.6.6.6.6 , ich könnte wirklich helfen, ich kenne dieses problem wahrscheinlich scheint, ziemlich unscheinbar und leicht zu korrigieren, aber ich habe Probleme, versucht es zu klären.
- Wahrscheinlich ein Duplikat jeder Frage immer fordern, floating point math funktioniert nicht, aber die Abstimmung zu schließen, da unklar, weil nicht Sie selbst, sagen Sie uns, was "Fehler" sind zu sehen.
- Oder welcher input ist notwendig, um das falsche Ergebnis. Es gibt wohl einige Fälle, in denen python kann es richtig zu tun ...
- Sie multipliziert einen string von einem integer; irgendwo, konnte Sie nicht konvertieren Sie Ihre Eingabe. Der code, den Sie zeigen gut funktioniert, das ist mehr oder weniger völlig nutzlos. Lesen Sie stackoverflow.com/help/mcve. Und deine Beschreibung ist falsch;
rate
muss den string, der als Eingabe in dieser Funktion umgewandelt wird. - Ich habe das Problem behoben, vielen Dank um eine Antwort von BadKarma, ich konnte nicht erkennen, dass meine Variablen wurden unterschiedliche Typen. Anfängerfehler, ich weiß
Du musst angemeldet sein, um einen Kommentar abzugeben.
Der einfachste Weg, um zu bekommen ein Fehler wie dieser ist die Besetzung der int-Wert zurück in einen Schwimmer vor der Multiplikation
'6.6.6.6.6.'
, es klingt für mich wierate
ist ein string. Multiplizieren Sie die Zeichenfolge'6.'
durch die Anzahl5
Sie erhalten diese Zeichenfolge wiederholt sich fünf mal in Folge. Diese Antwort löst Ihr problem durch die Umwandlung von string zu float-ersten.Unter Python 2 die Funktion Eingang führt eine eval auf der input-string:
- Und ein float:
Da es allgemein als unklug zu nehmen, beliebigen code aus Benutzer in einer Anwendung, die dieses Verhalten wurde geändert, unter Python 3.
Unter Python 3, Eingang immer einen string zurückgibt:
Die erklärt, Ihr Ergebnis:
Wenn Sie wollen sicher haben eine ähnliche Funktionalität in Python 3 können Sie wickeln
input
in einem Aufruf ast.literal_eval:Oder einfach konvertieren Sie die Eingabe des Benutzers, um den gewünschten Datentyp mit
int(x)
oderfloat(x)