0

我对 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列表的第二个数字,如何使用 pythonround()方法或任何其他方法将小数部分舍入到 50,如 3.50,或者换句话说,对于小数部分不同为 0 且小于 50 的每个数字将其舍入到 50。

4

3 回答 3

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 所说的。

于 2013-09-24T07:24:32.917 回答
0

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

>>> round(3.45, 1)
3.5
于 2013-09-24T07:28:05.713 回答
0

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

def round_decimal(dec, places=2):
    return int((dec * 10**places) + 0.5) / 10.**places
于 2015-02-20T15:32:54.563 回答