正如标题所说,在 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'))
它的工作...
正如标题所说,在 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'))
它的工作...
从上的文档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
只是因为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。
您要做的是将字符串文字转换为 int。'0.0'
无法解析为整数,因为它包含小数点,因此无法解析为整数。
但是,如果您使用
int(0.0)
或者
int(float('0.0'))
它会正确解析。
如果必须,您可以使用
int(float('0.0'))
您需要使用以下代码将 int 转换为浮点数: test = 0 testrun = float(int(test)) print(testrun) 输出:testrun = 0.0