我遇到了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。
答案 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