如何以最易读的形式格式化货币 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 答案实际上有助于此功能。我找不到它,但我会尽快喜欢它
所以我试图从一些非常大的浮点数中格式化货币,例如
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 答案实际上有助于此功能。我找不到它,但我会尽快喜欢它