【发布时间】:2021-12-30 01:58:56
【问题描述】:
我有以下代码:
def format_sizeof(num, suffix='', divisor=1000):
"""
Formats a number (greater than unity) with SI Order of Magnitude
prefixes.
Parameters
----------
num : float
Number ( >= 1) to format.
suffix : str, optional
Post-postfix [default: ''].
divisor : float, optional
Divisor between prefixes [default: 1000].
Returns
-------
out : str
Number with Order of Magnitude SI unit postfix.
"""
for unit in ['', 'k', 'M', 'G', 'T', 'P', 'E', 'Z']:
if abs(num) < 999.5:
if abs(num) < 99.95:
if abs(num) < 9.995:
return '{0:1.2f}'.format(num) + unit + suffix
return '{0:2.1f}'.format(num) + unit + suffix
return '{0:3.0f}'.format(num) + unit + suffix
num /= divisor
return '{0:3.1f}Y'.format(num) + suffix
我要做的是对其进行调整,使其始终打印相同数量的数字,无论大小写/单位如何,同时仍保持人类可读性。
这是为了确保每次终端刷新时都打印相同的宽度。
我遇到了几种方法,填充、字符串类型转换、math.log10。
我不确定解决这个问题的最佳方法是什么。
提前致谢。
【问题讨论】: