当前位置:  开发笔记 > 编程语言 > 正文

在python中将长数字格式化为字符串

如何解决《在python中将长数字格式化为字符串》经验,为你挑选了2个好方法。

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

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

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



1> Adam Rosenfi..:

我认为没有内置功能可以做到这一点.你必须自己动手,例如:

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'



2> rtaft..:

这个版本没有遭遇以前的答案中的错误,其中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'


这是唯一最适合我的版本(没有令人讨厌的尾随0)
推荐阅读
php
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有