2013-06-17 16 views

risposta

4

Semplicemente perché 0.0 non è un numero intero valido di base 10. Mentre 0 è.

leggere su 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

Dalla documentazione sulla int:

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

Se x è non è un numero o se viene data base, allora x deve essere una stringa o Unicode oggetto che rappresenta un intero letterale nella base data.

Quindi, '0.0' è un intero valido letterale per la base 10.

È necessario:

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

aiuto su 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

Se è necessario, è possibile utilizzare

int(float('0.0')) 
3

Quello che stai cercando di fare è convertire una stringa letterale in una int. '0.0' non può essere analizzato in un numero intero poiché contiene un punto decimale e pertanto non è un numero intero come un numero intero.

Tuttavia, se si utilizza

int(0.0) 

o

int(float('0.0')) 

sarà analizzare correttamente.