''int'' mit Nachkommastellen?

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
n3xtplayer
User
Beiträge: 37
Registriert: Sonntag 2. Oktober 2011, 12:13

Guten Abend

Ich habe eine kleine Funktion geschrieben, um die Auswertung einiger Daten zu vereifachen.

Code: Alles auswählen

def Auswertung1(): #Daten von BJbasic / BJbasic_Ace auswerten
    w = int(input('Draw Wins:'))
    x = int(input('Draw Losses:'))
    y = int(input('Stand Wins:'))
    z = int(input('Stand Losses:'))
    if w - x > y - z:
        print('Drawing is better')
    else:
        print('Standing is better')
Wenn ich jedoch die erste Zahl, kommt die folgende Fehlermeldung:

Code: Alles auswählen

Auswertung1()
Draw Wins:0.2582
Traceback (most recent call last):
  File "<pyshell#294>", line 1, in <module>
    Auswertung1()
  File "<pyshell#292>", line 2, in Auswertung1
    w = int(input('Draw Wins:'))
ValueError: invalid literal for int() with base 10: '0.2582'
Es scheint, als würde ''int'' nur ganze Zahlen bestimmen können. Ich will dies jedoch mit Zahlen mit bis zu 5 Nachkommastellen machen. Gibt es eine Lösung dafür?

Lg
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

int = Integer = Ganzzahl. Eine ganze Zahl hat nunmal keine Nachkommastellen.

Nun könnte man sagen "Nutze `float`". Mit floats muss man aber anders umgehen, als mit ints. Relevant: http://floating-point-gui.de/
n3xtplayer
User
Beiträge: 37
Registriert: Sonntag 2. Oktober 2011, 12:13

Hab mir dies Seite mal angeschaut... Doch da ich die Zahlen nicht soo genau brauche, sondern nur für einen Vergleich, spielt das keine Rolle. float geht also. Danke!
Was hast du denn mit ''anders umgehen'' gemeint? Dass man runden muss?
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

Der Vergleich ist eben das Problem:

Code: Alles auswählen

In [2]: 0.3 == 3 * 0.1
Out[2]: False
n3xtplayer
User
Beiträge: 37
Registriert: Sonntag 2. Oktober 2011, 12:13

Ok ich sehe das Problem. Da meine Vergleiche jedoch nur ''<'' oder ''>'' sind, hat dies keine Einwirkung auf meine Funktionen.
Antworten