在Python中,将整数格式化为表示数千个K的字符串以及数百万个M,并在逗号后留下几个数字的简单方法是什么?
我想将7436313显示为7.44M,将2345显示为2,34K.
是否有一些%字符串格式化运算符可用于此?或者只能通过在循环中实际除以1000并逐步构造结果字符串来完成?
我认为没有内置功能可以做到这一点.你必须自己动手,例如:
def human_format(num): magnitude = 0 while abs(num) >= 1000: magnitude += 1 num /= 1000.0 # add more suffixes if you need them return '%.2f%s' % (num, ['', 'K', 'M', 'G', 'T', 'P'][magnitude]) print('the answer is %s' % human_format(7436313)) # prints 'the answer is 7.44M'
这个版本没有遭遇以前的答案中的错误,其中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'