Search code examples
pythonpython-2.7vpython

extract number from exponent in Python


Hi everyone / Python Gurus

I would like to know how to accomplish the following task, which so far I've been unable to do so.

Here's what I have:

Q1 = 20e-6

Now this is an exponential number that if you print(Q1) as is it will show: 2e-5 which is fine. Mathematically speaking.

However, here's what I want to do with it:

I want Q1 to print only the number 20. And based on the whether this is e-6 then print uC or if this e-9 the print nC.

Here's an example for better understanding:

Q1=20e-6

When I run print(Q1) show: 20uC.

Q2=20e-9

When I run print(Q2) show: 20nC.

Can you please help me figure this out?


Solution

  • I recommend you using si-prefix.

    You can install it using pip:

    sudo pip install si-prefix
    

    Then you can use something like this:

    from si_prefix import si_format
    
    # precision after the point
    # char is the unity's char to be used
    def get_format(a, char='C', precision=2):
        temp = si_format(a, precision)
    
        try:
            num, prefix = temp.split()
        except ValueError:
            num, prefix = temp , ''
    
        if '.' in num:
            aa, bb = num.split('.')
            if int(bb) == 0:
                num = aa
    
        if prefix:
            return num + ' ' + prefix + char
        else:
            return num
    
    
    tests = [20e-6, 21.46e05, 33.32e-10, 0.5e03, 0.33e-2, 112.044e-6]
    for k in tests:
        print get_format(k)
    

    Output:

    20 uC
    2.15 MC
    3.33 nC
    500
    3.30 mC
    112.04 uC