2013-06-17 22 views

Trả lời

4

Đơn giản bởi vì 0.0 không phải là một số nguyên hợp lệ của cơ sở 10. Trong khi 0 là.

Đọc về 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

Từ các tài liệu trên int:

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

Nếu x là không phải là một số hoặc nếu cơ sở được đưa ra, sau đó x phải là một chuỗi hoặc Unicode đối tượng đại diện cho một chữ số nguyên trong cơ sở đã cho.

Vì vậy, '0.0' là một số nguyên không hợp lệ theo nghĩa đen cho cơ sở 10

Bạn cần:

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

giúp đỡ về 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

Nếu bạn phải, bạn có thể sử dụng

int(float('0.0')) 
3

Những gì bạn đang cố gắng làm là chuyển đổi một chuỗi chữ thành một int. '0.0' không thể được phân tích cú pháp thành số nguyên vì nó chứa dấu thập phân và do đó không thể phân tích thành số nguyên.

Tuy nhiên, nếu bạn sử dụng

int(0.0) 

hoặc

int(float('0.0')) 

nó sẽ phân tích một cách chính xác.

Các vấn đề liên quan