python - 将长数字格式化为字符串

在 Python 中,有什么简单的方法可以将整数格式化为字符串,用 K 表示千位,用 M 表示百万位,并且在逗号后面只留下几个数字?

我想将 7436313 显示为 7.44M,将 2345 显示为 2,34K。

是否有一些可用的 % 字符串格式化运算符?或者只能在循环中实际除以 1000 并逐步构造结果字符串来完成?

最佳答案

此版本不受先前答案中的错误的影响,即 999,999 为您提供 1000.0K。它还只允许 3 个有效数字并消除尾随的 0。

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])

输出如下:

>>> human_format(999999)
'1M'
>>> human_format(999499)
'999K'
>>> human_format(9994)
'9.99K'
>>> human_format(9900)
'9.9K'
>>> human_format(6543165413)
'6.54B'

https://stackoverflow.com/questions/579310/

相关文章:

android - 获取 Google Play 商店应用 HTML 动态徽章

c++ - 如何使用boost将日期时间格式化为字符串?

c# - 如何避免浪费屏幕空间编写稀疏的 C# 代码?

java - 用科学计数法格式化 double 值

c# - 扩展内置类型的自定义格式功能

.net - 格式化负 TimeSpan

c - printf 中的可变大小填充

python - 如何使用 Python 的 optparse 格式化位置参数帮助?

formatting - d3.js:tickformat - 添加一个 % 符号而不乘以 100

image - 子图的垂直对齐 LATEX