Number of digits in exponent

20,590

Solution 1

There is a no way to control that, best way is to write a function for this e.g.

def eformat(f, prec, exp_digits):
    s = "%.*e"%(prec, f)
    mantissa, exp = s.split('e')
    # add 1 to digits as 1 is taken by sign +/-
    return "%se%+0*d"%(mantissa, exp_digits+1, int(exp))

print eformat(0.0000870927939438012, 14, 3)
print eformat(1.0000870927939438012e5, 14, 3)
print eformat(1.1e123, 4, 4)
print eformat(1.1e-123, 4, 4)

Output:

8.70927939438012e-005
1.00008709279394e+005
1.1000e+0123
1.1000e-0123

Solution 2

You can use np.format_float_scientific

from numpy import format_float_scientific

f = 0.0000870927939438012

format_float_scientific(f, exp_digits=3) # prints '8.70927939438012e-005'

format_float_scientific(f, exp_digits=5, precision=2) #prints '8.71e-00005'
Share:
20,590
nmadzharov
Author by

nmadzharov

Updated on July 22, 2022

Comments

  • nmadzharov
    nmadzharov almost 2 years

    Is it possible to set the number of digits to be used for printing the exponent of a floating-point number? I want to set it to 3.

    Currently,

    f = 0.0000870927939438012
    >>> "%.14e"%f
    '8.70927939438012e-05'
    >>> "%0.14e"%f
    '8.709279e-005'
    

    What I want to print is: '8.70927939438012e-005'