为什么 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'
我在 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'