如何以最易读的形式格式化货币 python

How to format currency in its most readable form python

所以我试图从一些非常大的浮点数中格式化货币,例如

spendings = [1204343.65, 1000000.01, 2310.08, 5.82]

例如,最易读的表格可能是:

[.2M, M, .31K, .82] 

那么最适合的方法是什么。 locale 和 python-money 无法进行所需的格式化,因为它们确实放置了逗号,但它们无法实现压缩。那么有没有一种方法可以做到这一点,以便它以最易读的形式出现。我在 Whosebug 上也遇到了很多答案,但 none 实际上回答了我想要实现的目标。

不会总有办法。但是你得想办法:

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]

产生:

['.2M', 'M', '.31K', '.82']

P.S。一些 SO 答案实际上有助于此功能。我找不到它,但我会尽快喜欢它