为什么 int('.0') 会给出 ValueError?

Why does int('.0') give ValueError?

我在 int('.0')

中将浮点数作为字符串格式传递

0.0 是有效的浮点数,为什么会报错?

因为您可以一次输入 cast 一步。例如,您可以将 float 转换为 int 或将 string 转换为 int。不是浮点字符串,这里是 2steps。

来自 int 的文档:

If x is not a number or if base is given, then x must be a string, bytes, or bytearray instance representing an integer literal in radix base. Optionally, the literal can be preceded by + or - (with no space in between) and surrounded by whitespace.

所以它给你 ValueError 因为字符串 '.0' 不代表整数文字。

如果删除引号并将其设为浮点数,就可以做到这一点:

int(.1)

但是如果字符串内部是一个浮点数,字符串就不起作用,因为他们会认为它是一个数字并且会中断说 '.' 不是一个数值,上面的原因也是因为:

>>> .1
0.1
>>> 

并且:

float(0.1)

有效。

请注意,即使是字符串中的真正浮点数也无法转换为整数:

>>> int('3.1')
Traceback (most recent call last):
  File "<pyshell#1>", line 1, in <module>
    int('3.1')
ValueError: invalid literal for int() with base 10: '3.1'