关于excel公式:在python中保留小数点后的第一个数字

Retaining first number after the decimal in python

我想让python做一些类似于ms excel =ROUNDDOWN (number, num_digits)的事情。在我的例子中,它看起来像这样

1
a = [3.5, 43.689, 113.225, 65.4545]

我试过这样:

1
2
3
4
5
6
7
8
a = [3.5, 43.689, 113.225, 65.4545]
b = [str(i).split(".") for i in a]

c = [i[0] for i in b]
d = [i[1][0] for i in b]

e = list(zip(c,d))
f = [float(".".join(i)) for i in e]

它提供了我需要的输出:

1
2
>>> print (f)
[3.5, 43.6, 113.2, 65.4]

在python中有没有更好和最简单的方法来完成上面的工作?


就像你一样:

1
2
a = [3.5, 43.689, 113.225, 65.4545]
f = [float("{:.1f}".format(x)) for x in a]

无论如何,请记住,您可以只使用小数,并使用其表示格式。

然后,您可以使用数学floor进行转换,如下所示:

1
2
3
import math
f = [math.floor(x * 10)/10.0 for x in a]
print(f)

这里有一个活生生的例子。


我觉得这更像是Python的方式:

1
2
from decimal import Decimal, ROUND_DOWN
Decimal(65.4545).quantize(Decimal('.0'), rounding=ROUND_DOWN)


如果这是你想要的,那么int会向零进发:

1
2
a = [3.5, 43.689, 113.225, 65.4545]
[int(x * 10) / 10 for x in a]

输出:

1
[3.5, 43.6, 113.2, 65.4]


我想你可以用圆表达式:

1
2
3
>>> a = [3.5, 43.689, 113.225, 65.4545]
>>> [float(Decimal(b).quantize(decimal.Decimal('.0'), rounding=decimal.ROUND_DOWN)) for b in a]
[3.5, 43.6, 113.2, 65.4]

我希望这对你有帮助;)