14

正如标题所说,在 Python 中(我在 2.7 和 3.3.2 中尝试过),为什么int('0.0')不起作用?它给出了这个错误:

ValueError: invalid literal for int() with base 10: '0.0'

如果你尝试int('0')int(eval('0.0'))它的工作...

4

5 回答 5

21

从上的文档int

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

如果 x不是数字或给定基数,则 x 必须是字符串或 Unicode 对象,表示给定基数中的整数文字。

因此,'0.0'对于基数为 10 的整数文字是无效的。

你需要:

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

帮助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
于 2013-06-17T07:11:18.830 回答
5

只是因为0.0不是以 10 为底的有效整数。0而是。

在这里阅读int()

整数(x,基数=10)

将数字或字符串 x 转换为整数,如果没有给出参数,则返回 0。如果 x 是数字,它可以是普通整数、长整数或浮点数。如果 x 是浮点数,则转换将向零截断。如果参数超出整数范围,则函数返回一个 long 对象。

如果 x 不是数字或给出了 base,则 x 必须是字符串或 Unicode 对象,表示以基数为基数的整数文字。可选地,文字可以在前面加上 + 或 - (中间没有空格)并被空格包围。base-n 文字由数字 0 到 n-1 组成,其中 a 到 z(或 A 到 Z)的值是 10 到 35。默认基数是 10。允许的值是 0 和 2-36。Base-2、-8 和 -16 文字可以选择以 0b/0B、0o/0O/0 或 0x/0X 作为前缀,就像代码中的整数文字一样。基数 0 意味着将字符串完全解释为整数文字,因此实际基数是 2、8、10 或 16。

于 2013-06-17T07:10:15.743 回答
4

您要做的是将字符串文字转换为 int。'0.0'无法解析为整数,因为它包含小数点,因此无法解析为整数。

但是,如果您使用

int(0.0)

或者

int(float('0.0'))

它会正确解析。

于 2013-06-17T07:14:06.717 回答
3

如果必须,您可以使用

int(float('0.0'))
于 2013-06-17T07:13:13.460 回答
1

您需要使用以下代码将 int 转换为浮点数: test = 0 testrun = float(int(test)) print(testrun) 输出:testrun = 0.0

于 2021-07-04T04:58:40.343 回答