2013-06-17 10 views

Antwort

4

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

Lesen Sie mehr über int()here.

int(x, base=10)

Convert a number or string x to an integer, or return 0 if no arguments are given. If x is a number, it can be a plain integer, a long integer, or a floating point number. If x is floating point, the conversion truncates towards zero. If the argument is outside the integer range, the function returns a long object instead.

If x is not a number or if base is given, then x must be a string or Unicode object representing an integer literal in radix base. Optionally, the literal can be preceded by + or - (with no space in between) and surrounded by whitespace. A base-n literal consists of the digits 0 to n-1, with a to z (or A to Z) having values 10 to 35. The default base is 10. The allowed values are 0 and 2-36. Base-2, -8, and -16 literals can be optionally prefixed with 0b/0B, 0o/0O/0, or 0x/0X, as with integer literals in code. Base 0 means to interpret the string exactly as an integer literal, so that the actual base is 2, 8, 10, or 16.

12

Aus der Dokumentation auf int:

int(x=0) -> int or long 
int(x, base=10) -> int or long 

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

So ist '0.0' eine ungültige Ganzzahlliteral für Basis 10

Sie benötigen:

>>> int(float('0.0')) 
0 

Hilfe auf int:

>>> print int.__doc__ 
int(x=0) -> int or long 
int(x, base=10) -> int or long 

Convert a number or string to an integer, or return 0 if no arguments 
are given. If x is floating point, the conversion truncates towards zero. 
If x is outside the integer range, the function returns a long instead. 

If x is not a number or if base is given, then x must be a string or 
Unicode object representing an integer literal in the given base. The 
literal can be preceded by '+' or '-' and be surrounded by whitespace. 
The base defaults to 10. Valid bases are 0 and 2-36. Base 0 means to 
interpret the base from the string as an integer literal. 
>>> int('0b100', base=0) 
4 
3

Wenn Sie müssen, können Sie

verwenden
int(float('0.0')) 
3

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

Wenn Sie jedoch

int(0.0) 

oder

int(float('0.0')) 

es wird richtig analysieren verwenden.

Verwandte Themen