在Python中将字符串浮点值转换为int

时间:2014-10-12 21:46:46

标签: python string

为什么不能直接将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

2 个答案:

答案 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