不同长度的圆形数字

时间:2014-05-20 15:48:16

标签: python

我正在抓取WSJ的数据,特别是Adv. volume*Decl. volume*数字。

所以在这个例子中,我需要对前6位数进行舍入。比如Adv。 volume *的编号为92,461,567,将四舍五入为92,462。在某些情况下,这个数字可能是921,324,745,在这种情况下它将会转到921,325。我只需要前两组数字,第一组中是否有2或3个数字用逗号分隔。我确实使用了圆形功能,但它并不总是正确地为我圆。

我如何做到这一点的一个例子如下:

Adv_Vol = Adv_Vol.replace(',','')
Adv_Vol = '%d' % (round(float(Adv_Vol[:7])))

这样做的方法是什么,以便准确处理第一组数字中是否有2位或3位?

2 个答案:

答案 0 :(得分:1)

你没有小数,所以你不应该首先进行四舍五入。这样做:

>>> x = "123,456,789"
>>> y = "23,456,789"
>>> xi = int(x.replace(',', ''))
>>> yi = int(y.replace(',', ''))
>>> print xi / 1000
123456
>>> print yi / 1000
23456
>>> print int(round(xi, -3))/1000
123457
>>> print int(round(yi, -3))/1000
23457

答案 1 :(得分:0)

如果你想减少最后3位非常简单的数字:

Adv_Vol = '92,461,567'
stripped = Adv_Vol.replace(',','')[:-3] # returns 92461

但是如果你需要进行舍入,那么它仍然不是很复杂:

rounded = int(round(float(Adv_Vol.replace(',',''))/1000.0)) # returns 92462