如何将数字转换为标准前缀?

时间:2019-07-20 03:09:13

标签: python

我想将浮点数0.002116转换为2.116m(milli)。我看到了将浮点数125510.92808470126转换为125.51K但输出具有上述浮点值的0的库。

到目前为止,我尝试过numerize python库。

1 个答案:

答案 0 :(得分:0)

这可能有效,可以根据需要更改:

#!/usr/bin/env python

pfx_up = [(1e3, 'kilo'), (1e6, 'mega'), (1e9, 'giga'), (1e12, 'tera')]

pfx_down = [(0.001, 'milli'), (1e-6, 'micro'), (1e-9, 'nano'), (1e-12, 'pico'), (1e-15, 'femto')]

def make_prefix( num ) :
    result = str(num)
    if num > 1 :
        for p in pfx_up :
            if num > p[0]*10 :
                result = '%.2f %s' % (num / p[0], p[1])
    else :
        for p in pfx_down :
            if num < p[0]*100 :
                result = '%.2f %s' % (num / p[0], p[1])

    return result

if __name__ == '__main__' :
    print make_prefix(0.01234)
    print make_prefix(1234342)
    print make_prefix(12343464356)
    print make_prefix(0.00001234)
    print make_prefix(0.0000001234)
'''
outputs:
12.34 milli
1234.34 kilo
12.34 giga
12.34 micro
0.12 micro
'''