擅长:python、mysql、java
<p>您可以使用<code>int</code>的子类,并根据需要定义<code>__format__</code>。在</p>
<pre><code>>>> class rint(int):
... def __format__(self, spec):
... return int.__format__(int(round(self, -2)), spec)
...
>>> raw_data = [111, 22222, 33333]
>>> data = map(rint, raw_data)
>>> [format(x, ',') for x in data]
['100', '22,200', '33,300']
</code></pre>
<p>或者相当于浮点数</p>
^{pr2}$
<p>编辑:
这个更老套的解决方案利用了<code>val = ("{:" + self.fmt + "}").format(val)</code>行。如果执行过程发生变化,可能会中断。在</p>
<pre><code>class Fmt(str):
def __add__(self, other):
return Fmt(str.__add__(self, other))
def __radd__(self, other):
return Fmt(str.__add__(other, self))
def format(self, *args):
return str.format(self, *(int(round(x, -2)) for x in args))
ax = sns.heatmap(flights, annot=True, fmt=Fmt(","))
</code></pre>
<p>最好是能够传递一个<code>Formatter()</code>而不仅仅是一个<code>fmt</code>字符串。在</p>