在Python中将字符串转换为带小数的整数

81 投票
8 回答
287495 浏览
提问于 2025-04-15 12:44

我在Python中有一个格式为'nn.nnnnn'的字符串,我想把它转换成一个整数。

直接转换会失败:

>>> s = '23.45678'
>>> i = int(s)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: invalid literal for int() with base 10: '23.45678'

我可以通过以下方式将其转换为小数:

>>> from decimal import *
>>> d = Decimal(s)
>>> print d
23.45678

我也可以在'.'处拆分字符串,然后从零中减去小数部分,再把这个结果加到整数部分……听起来真麻烦。

不过我更希望能直接得到一个整数,不想进行不必要的类型转换或复杂操作。

8 个回答

4
>>> s = '23.45678'
>>> int(float(s))
23
>>> int(round(float(s)))
23
>>> s = '23.54678'
>>> int(float(s))
23
>>> int(round(float(s)))
24

你没有说明你是否想要四舍五入...

16

你想要什么样的四舍五入方式呢?是把2.67变成3,还是变成2?如果你想用四舍五入的话,可以试试这个:

s = '234.67'
i = int(round(float(s)))

如果不想用四舍五入,那就直接这样做:

s = '234.67'
i = int(float(s))
147

这样怎么样?

>>> s = '23.45678'
>>> int(float(s))
23

或者……

>>> int(Decimal(s))
23

或者……

>>> int(s.split('.')[0])
23

我觉得这可能已经很简单了,恐怕不会更简单了。接受这个吧,然后继续前进。

撰写回答