Python 2.7 und 3.3.2, warum int ('0.0') nicht funktioniert?

7

Wie der Titel sagt, in Python (ich probierte in 2.7 und 3.3.2), warum int('0.0') nicht funktioniert? Es gibt diesen Fehler:

%Vor%

Wenn Sie int('0') oder int(eval('0.0')) ausprobieren, funktioniert es ...

    
Saullo Castro 17.06.2013, 07:09
quelle

4 Antworten

4

Einfach weil 0.0 keine gültige ganze Zahl von Basis 10 ist. Während 0 ist.

Lesen Sie hier über int() hier.

  

int (x, Basis = 10)

     

Konvertiere eine Zahl oder eine Zeichenkette x in eine Ganzzahl oder gib sie zurück   0 wenn keine Argumente angegeben sind. Wenn x eine Zahl ist, kann es eine Ebene sein   Ganzzahl, eine lange ganze Zahl oder eine Gleitkommazahl. Wenn x schwebt   Punkt, die Konvertierung wird in Richtung Null abgeschnitten. Wenn das Argument ist   Außerhalb des Ganzzahlbereichs gibt die Funktion stattdessen ein langes Objekt zurück.

     

Wenn x keine Zahl ist oder wenn eine Basis angegeben wird, muss x eine Zeichenkette oder sein   Unicode-Objekt, das ein Integer-Literal in Radix-Basis darstellt.   Optional kann dem Literal ein + oder - vorangestellt werden (ohne Leerzeichen in   zwischen) und von Whitespace umgeben. Ein Basis-n-Literal besteht aus   die Ziffern 0 bis n-1, wobei a bis z (oder A bis Z) Werte von 10 bis 35 haben.   Die Standardbasis ist 10. Die zulässigen Werte sind 0 und 2-36. Basis-2, -8,   und -16 Literale können optional 0b / 0B, 0o / 0O / 0 oder vorangestellt werden   0x / 0X, wie bei Integer-Literalen im Code. Base 0 bedeutet, das zu interpretieren   string genau wie ein Integer-Literal, so dass die tatsächliche Basis ist 2, 8,   10 oder 16.

    
Sukrit Kalra 17.06.2013, 07:10
quelle
12

Aus den Dokumenten von int :

%Vor%

Wenn x keine Zahl ist oder wenn eine Basis angegeben wird, muss x eine Zeichenfolge oder ein Unicode-Objekt sein, das ein Integer-Literal in der angegebenen Basis darstellt.

Also ist '0.0' ein ungültiges Integer-Literal für die Basis 10.

Sie brauchen:

%Vor%

Hilfe zu int :

%Vor%     
Ashwini Chaudhary 17.06.2013 07:11
quelle
3

Wenn Sie müssen, können Sie

verwenden %Vor%     
Klaus-Dieter Warzecha 17.06.2013 07:13
quelle
3

Sie versuchen, ein String-Literal in ein int zu konvertieren. '0.0' kann nicht zu einer Ganzzahl syntaktisch analysiert werden, da sie einen Dezimalpunkt enthält und daher als Ganzzahl nicht getrennt werden kann.

Wenn Sie jedoch

verwenden %Vor%

oder

%Vor%

es wird korrekt analysiert.

    
Achrome 17.06.2013 07:14
quelle