为什么不能直接将Python中表示为字符串的浮点数转换为int变量?
例如,
>>> val=str(10.20)
>>> int(val)
Traceback (most recent call last):
File "<stdin>", line 1, in
ValueError: invalid literal for int() with base 10: '10.2'
但是,这有效,
>>> int(float(val))
10
答案 0 :(得分:1)
原因是int
在两个例子中做了两件不同的事情。
在您的第一个示例中,int
正在将字符串转换为整数。当你给它10.2
时,这不是一个整数,所以它失败了。
在第二个示例中,int
将浮点值转换为整数。这被定义为在返回整数值之前截断任何小数部分。
答案 1 :(得分:0)
如果您愿意使用第三方库(完全披露,我是作者),有一种方法可以进行此转换。编写fastnumbers库是为了从字符串类型到数字类型的快速转换。其中一个转换函数是fast_forceint,它会将您的字符串转换为整数,即使它有小数。
>>> from fastnumbers import fast_forceint
>>> fast_forceint('56')
56
>>> fast_forceint('56.0')
56
>>> fast_forceint('56.07')
56