所以我试图从一些浮点数格式化货币,这些浮点数非常大。
spendings = [1204343.65, 1000000.01, 2310.08, 5.82]
例如,这里最具可读性的表单可能是:
[$1.2M, $1M, $2.31K, $5.82]
那么,最合适的方式是什么呢?locale和python-money不能进行所需的格式化,因为它们放了逗号,但它们不能实现压缩。所以有没有一种方法可以让它以最易读的形式出现。我在StackOverflow上也遇到了很多答案,但没有一个真正回答了我想要实现的目标。
发布于 2020-10-01 19:29:51
不会总是有办法的。但你必须找到一种方法:
def human_format(num):
num = float('{:.3g}'.format(num))
magnitude = 0
while abs(num) >= 1000:
magnitude += 1
num /= 1000.0
return '${}{}'.format('{:f}'.format(num).rstrip('0').rstrip('.'), ['', 'K', 'M', 'B', 'T'][magnitude])
因此,如下所示将其应用于列表:
spendings = [1204343.65, 1000000.01, 2310.08, 5.82]
[human_format(i) for i in spendings]
产生:
['$1.2M', '$1M', '$2.31K', '$5.82']
附注:一些这样的答案在这个功能中实际上是有帮助的。我找不到它,但我会尽快喜欢它。
https://stackoverflow.com/questions/64161729
复制相似问题