2012-05-17 16 views

ответ

4

Это заставляет вас довольно близко, вам нужно 8.e-58 точно или вы просто пытаетесь сократить его в чем-то читаемым?

>>> x = 8.54768039530728989343156856E-58 
>>> print "{0:.1e}".format(x) 
8.5e-58 

Альтернатива:

>>> print "{0:.0e}".format(x) 
9e-58 

Обратите внимание, что на Python 2.7 или 3.1+, вы можете опустить первый ноль, который указывает на позицию, так что это будет что-то вроде "{:.1e}".format(x)

+0

хорошо сделано. это намного проще - спасибо – zach

3

, как это ?

>>> x = 8.54768039530728989343156856E-58 
>>> "{:.1e}".format(x) 
'8.5e-58' 
+0

да. отлично. – zach

1

Другой способ сделать это, если вы когда-либо захотите извлечь экспоненту без выполнения строковых манипуляций.

def frexp_10(decimal): 
    logdecimal = math.log10(decimal) 
    return 10 ** (logdecimal - int(logdecimal)), int(logdecimal) 

>>> frexp_10(x) 
(0.85476803953073244, -57) 

Формат, как вы хотите ...

+0

спасибо spinning_plate, но я искал маленькие и простые – zach

0

Есть два ответа: один для использования номера и один для простого отображения.

Для действительных чисел:

>>> round(3.1415,2) 
3.14 
>>> round(1.2345678e-10, 12) 
1.23e-10 

Встроенный раунда() функции будет округлить число до произвольного количества знаков после запятой. Вы можете использовать это, чтобы обрезать незначительные цифры из показаний.

Для отображения важно, какую версию дисплея вы используете. В Python 2.x и устаревший в 3.x вы можете использовать форматирование 'e'.

>>> print "%6.2e" % 1.2345678e-10 
1.23e-10 

или 3.x, используйте:

>>> print("{:12.2e}".format(3.1415)) 
    3.14e+00 
>>> print("{:12.2e}".format(1.23456789e-10)) 
    1.23e-10 

или, если вам нравятся нули:

>>> print("{:18.14f}".format(1.23456789e-10)) 
    0.00000000
Смежные вопросы