在Python中将字符串转换为带小数的整数
我在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
我觉得这可能已经很简单了,恐怕不会更简单了。接受这个吧,然后继续前进。