有没有一个python库可以让这样的数字更易读?
187,280,840,422,780美元
编辑:例如,这个的输出是187万亿,而不仅仅是逗号分隔。所以我希望输出是万亿、数百万、数十亿等等
发布于 2010-07-01 12:05:19
据我所知,你只想要“最重要”的部分。要执行此操作,请使用floor(log10(abs(n)))获取位数,然后从那里开始。可能是这样的:
import math
millnames = ['',' Thousand',' Million',' Billion',' Trillion']
def millify(n):
n = float(n)
millidx = max(0,min(len(millnames)-1,
int(math.floor(0 if n == 0 else math.log10(abs(n))/3))))
return '{:.0f}{}'.format(n / 10**(3 * millidx), millnames[millidx])对一组不同的数字运行上面的函数:
for n in (1.23456789 * 10**r for r in range(-2, 19, 1)):
print('%20.1f: %20s' % (n,millify(n)))
0.0: 0
0.1: 0
1.2: 1
12.3: 12
123.5: 123
1234.6: 1 Thousand
12345.7: 12 Thousand
123456.8: 123 Thousand
1234567.9: 1 Million
12345678.9: 12 Million
123456789.0: 123 Million
1234567890.0: 1 Billion
12345678900.0: 12 Billion
123456789000.0: 123 Billion
1234567890000.0: 1 Trillion
12345678900000.0: 12 Trillion
123456789000000.0: 123 Trillion
1234567890000000.0: 1235 Trillion
12345678899999998.0: 12346 Trillion
123456788999999984.0: 123457 Trillion
1234567890000000000.0: 1234568 Trillion发布于 2011-10-06 11:54:46
(编辑:不敢相信我会在2019年更新我的答案,并在2020年再次更新!)这证明了人类进化的下一个阶段是通过互联网分享知识!)
对于Python2.7+或v3,您只需在字符串格式中使用",“选项:
>>> "{:,}".format(100000000)
'100,000,000'有关详细信息,请参阅PEP 378:千位分隔符的格式说明符:
http://www.python.org/dev/peps/pep-0378/
对于Python3.6+,您还可以使用"_“格式:
>>> "{:_}".format(100000000)
'100_000_000'请参阅PEP 515了解详细信息:
https://www.python.org/dev/peps/pep-0515/
2014年添加:这些天我有以下shell函数:
human_readable_numbers () {
python2.7 -c "print('{:,}').format($1)"
}这样我就不用睁大眼睛看大数字了。
停在这里,除非你在阅读这篇文章时不幸地使用了2.7之前的代码或没有Python2.7的环境……
您也可以使用locale执行此操作:
import locale
locale.setlocale(locale.LC_ALL, 'en_US')
locale.format('%d', 2**32, grouping=True) # returns '4,294,967,296'希望这能有所帮助!
发布于 2010-07-01 09:02:30
对我来说,这个数字看起来很人性化。不友好的数字将是187289840422780.00。要添加逗号,您可以创建自己的函数或搜索一个(我找到了this):
import re
def comma_me(amount):
orig = amount
new = re.sub("^(-?\d+)(\d{3})", '\g<1>,\g<2>', amount)
if orig == new:
return new
else:
return comma_me(new)
f = 12345678
print comma_me(`f`)
Output: 12,345,678如果您想要对一个数字进行舍入以使其更具可读性,有一个python函数可以做到这一点:round()。
您可以进一步远离实际数据,并使用一个函数说“一个非常高的数量”或“超过100万亿”,该函数将根据您编程的基准返回不同的值。
https://stackoverflow.com/questions/3154460
复制相似问题