栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Python格式化大值

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Python格式化大值

生成格式字符串的方法可能更短;但是它们很容易就可以映射到每个量级。我不完全了解您想要w / r / t小数点长度的行为,但是这样做的逻辑应该很简单。

由于您拥有的是一种方法,因此我将其合并到一个类中。(这也避免了

formats
每次调用函数时都进行定义。)

from math import log10class Formatter(object):    def __init__(self):        self.formats = (('%1.1f', 0),  ('%2.1f', 0),  ('%1.2f K', 3),  ('%1.2f K', 3),  ('%2.1f K', 3),  ('%1.2f M', 6),  ('%1.2f M', 6),  ('%2.1f M', 6),  ('%1.2f B', 9),  ('%1.2f B', 9),  ('%2.1f B', 9),  ('%1.2f T', 12),  ('%1.2f T', 12),  ('%2.1f T', 12))    def human_readable(self, x):        if x == 0: return '0'        magnitude = int(log10(abs(x)))        if magnitude > 13: format_str, denominator_mag = '%i T', 12        else: format_str, denominator_mag = self.formats[magnitude]        return (format_str % (x * 1.0 / (10 ** denominator_mag))).lstrip('0')

编辑 :这是不使用查找表的一个:

def human_readable(self, x):    if x == 0: return '0'    magnitude = int(log10(abs(x)))    if magnitude > 13:         format_str = '%i T'        denominator_mag = 12    else:         float_fmt = '%2.1f ' if magnitude % 3 == 1 else '%1.2f '        illion = (magnitude + 1) // 3        format_str = float_fmt + ['', 'K', 'M', 'B', 'T'][illion]        denominator_mag = illion * 3    return (format_str % (x * 1.0 / (10 ** denominator_mag))).lstrip('0')


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/516987.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号