python round()方法的问题

时间:2013-09-24 07:11:59

标签: python python-2.7

我遇到了python十进制列表的问题

我说我有一个如下列表:

>>> a=[2,3.45,7,8,8.75,9]

在这里,我获得了几乎相同的东西

>>> b=[round(x,2) for x in a]
>>> b
[2.0, 3.45, 7.0, 8.0, 8.75, 9.0] # same result

当我尝试这样的事情时:

>>> import decimal
>>> b=[round(decimal.Decimal(x),50) for x in a]
>>> b
[2.0, 3.45, 7.0, 8.0, 8.75, 9.0] # same result

现在当我尝试以十进制0舍入时,我得到了这个

>>> b=[round(x) for x in a]
>>> b
[2.0, 3.0, 7.0, 8.0, 9.0, 9.0] # here 8.75 has been rounded to 9.0 , that fine

我担心的是列表的第二个数字3.45,如何使用python round()方法     或者将小数部分舍入为50的任何其他方法,如3.50或换句话说     对于每个数字,小数部分不等于0且小于50,将其舍入为50。

3 个答案:

答案 0 :(得分:4)

你想要这个:

>>> import math
>>> b = [math.ceil(x*2)/2 for x in a]
>>> b
[2.0, 3.5, 7.0, 8.0, 9.0, 9.0]

与@Bogdan所说的类似。

答案 1 :(得分:0)

如果你想要一个十进制数字,那么只需指定它:

>>> round(3.45, 1)
3.5

答案 2 :(得分:0)

这允许您舍入到所需的小数位数。

def round_decimal(dec, places=2):
    return int((dec * 10**places) + 0.5) / 10.**places