Seite 1 von 1

''int'' mit Nachkommastellen?

Verfasst: Dienstag 1. November 2011, 18:08
von n3xtplayer
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

Re: ''int'' mit Nachkommastellen?

Verfasst: Dienstag 1. November 2011, 18:26
von cofi
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/

Re: ''int'' mit Nachkommastellen?

Verfasst: Dienstag 1. November 2011, 19:44
von n3xtplayer
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?

Re: ''int'' mit Nachkommastellen?

Verfasst: Dienstag 1. November 2011, 19:54
von cofi
Der Vergleich ist eben das Problem:

Code: Alles auswählen

In [2]: 0.3 == 3 * 0.1
Out[2]: False

Re: ''int'' mit Nachkommastellen?

Verfasst: Dienstag 1. November 2011, 20:47
von n3xtplayer
Ok ich sehe das Problem. Da meine Vergleiche jedoch nur ''<'' oder ''>'' sind, hat dies keine Einwirkung auf meine Funktionen.