2013-06-17 13 views

Odpowiedz

4

prostu dlatego 0.0 nie jest prawidłową liczbą całkowitą od podstawy 10. Podczas 0 jest.

Przeczytaj o 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

Od docs na int:

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

Jeśli x jest nie numer lub jeśli baza jest podana, to x musi być ciągiem lub Unicode obiekt reprezentujący liczbę całkowitą w danej bazie.

Więc '0.0' jest nieważny całkowitą dosłowny do podstawy 10.

potrzebował:

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

pomoc na 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

Jeśli trzeba, można użyć

int(float('0.0')) 
3

To, co próbujesz zrobić, to przekonwertować ciąg literału na int. '0.0' nie można sparsować do liczby całkowitej, ponieważ zawiera kropkę dziesiętną i dlatego jest nieodparcie jako liczba całkowita.

Jednak jeśli używasz

int(0.0) 

lub

int(float('0.0')) 

będzie poprawnie analizować.