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

Mat*_*pel 52 python string integer decimal

我有一个格式的字符串: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'
Run Code Online (Sandbox Code Playgroud)

我可以使用以下方法将其转换为十进制:

>>> from decimal import *
>>> d = Decimal(s)
>>> print d
23.45678
Run Code Online (Sandbox Code Playgroud)

我也可以拆分'.',然后从零中减去小数,然后将其添加到整数......哎呀.

但我更喜欢把它作为一个int,没有不必要的类型转换或机动.

Pao*_*ino 104

这个怎么样?

>>> s = '23.45678'
>>> int(float(s))
23
Run Code Online (Sandbox Code Playgroud)

要么...

>>> int(Decimal(s))
23
Run Code Online (Sandbox Code Playgroud)

要么...

>>> int(s.split('.')[0])
23
Run Code Online (Sandbox Code Playgroud)

我怀疑它会比这简单得多,我害怕.接受它并继续前进.

  • 记得`import decimal`然后用它作`decimal.Decimal(5)`或者从十进制导入十进制`做`并使用它作为`Decimal(5)`.我总是忘记. (3认同)

Dan*_*enc 13

你想要什么样的舍入行为?你是2.67变成3,或2.如果你想使用四舍五入,试试这个:

s = '234.67'
i = int(round(float(s)))
Run Code Online (Sandbox Code Playgroud)

否则,只需:

s = '234.67'
i = int(float(s))
Run Code Online (Sandbox Code Playgroud)