2017-02-15 20 views
1

Я хотел бы преобразовать следующее:Преобразовать число с плавающей точкой в ​​научном формате с фиксированным показателем

0.00000012 to 0.1e-6 
0.0000012 to 1.2e-6 

и нашел:

'% .1e' % вар

что составляет

0.00000012 to 1.2e-7 
0.0000012 to 1.2e-6 

Как я могу форматировать, чтобы зафиксировать экспоненту?

Как я могу применить тот же формат к титрам matplotlib?

ответ

0

Использование plt.ticklabel_format. Вот MWE.

import matplotlib.pyplot as plt 

x = range(2) 
y = [0.00000012, 0.0000012] 
plt.plot(x, y) 

plt.xticks(x) 
plt.yticks(y) 
plt.ticklabel_format(style='sci', axis='y', scilimits=(0, 0)) 

plt.show() 

, которые производят,

0

Вы можете использовать это (вам нужно определить требуемую точность):

number_to_convert = 0.00000012 
precision = 3 
print ("%0.*e"%(precision,number_to_convert)) 
0

Для форматирования чисел используйте следующим образом:

>>> for i in [.12e9,1.2e9,12e9,120e9]: 
...  print('{:.3e} => {:0=5.3f}e9'.format(i, i/1e9)) 

1.200e+08 => 0.120e9 
1.200e+09 => 1.200e9 
1.200e+10 => 12.000e9 
1.200e+11 => 120.000e9 

См. documentation. {:0=5.3f} означает «нуль-pad, pad между знаком и номером, общая ширина поля 8, 3 места после десятичного, формат фиксированной точки».