擅长:python、mysql、java
<p>试试这个:</p>
<pre><code>import math
def fmtnum(num):
k = (1e3, 'k')
M = (1e6, 'M')
G = (1e9, 'G')
table = {3: k, 4: k, 5: k, 6: M, 7: M, 8: M, 9: G, 10: G, 11: G}
num = float(num)
exp = math.log10(num)
if num < 0:
exp = int(exp)-1
else:
exp = int(exp)
try:
denum, suffix = table[exp]
return '{:g} {}'.format(num/denum, suffix)
except KeyError:
return '{:g}'.format(num)
</code></pre>
<p>对于10的负幂扩展这个解决方案已经留给读者作为练习。:-)</p>
<p>示例:</p>
<pre><code>In [50]: fmtnum(3250)
Out[50]: '3.25 k'
In [51]: fmtnum(32500)
Out[51]: '32.5 k'
In [52]: fmtnum(325000)
Out[52]: '325 k'
In [53]: fmtnum(3250000)
Out[53]: '3.25 M'
In [54]: fmtnum(32500000)
Out[54]: '32.5 M'
In [55]: fmtnum(325000000)
Out[55]: '325 M'
In [56]: fmtnum(3250000000)
Out[56]: '3.25 G'
</code></pre>