Печать десятичных знаков до 8 знаков точности в python? [Дубликат]

1

Следующий код печатает десятичные знаки различных прецизионностей, но возвращается к научной нотации за 7 местами. Мне нужно отобразить ширину строки не менее 8 мест в моем пользовательском интерфейсе.

Как получить строковое десятичное число с 8 точками точности?

from decimal import *
getcontext().prec = 8 # set precision to 8 decimal points. 
getcontext().rounding = "ROUND_DOWN" # alway round down 

# stringified zero of various precisions

zw = ['0', '0.0', '0.00', '0.000000', '.00000000', '0.00000000', '0.000000000000']

for n in range(0,len(zw)): 
    zstr = zw[n]                # stringified zero 
    zdec = Decimal(zstr)        # decimalized zero
    print (zstr, ":", zdec) # compare stringified and decimalized zero
Теги:
python-3.x

2 ответа

1
Лучший ответ

Пытаться:

from decimal import *
getcontext().prec = 8 # set precision to 8 decimal points. 
getcontext().rounding = "ROUND_DOWN" # alway round down 

# stringified zero of various precisions

zw = ['0', '0.0', '0.00', '0.000000', '.00000000', '0.00000000', '0.000000000000']

for zstr in zw: 
    zdec = Decimal(zstr)        # decimalized zero
    print ('{} : {:.8f}'.format(zstr, zdec)) # compare stringified and decimalized zero

Печать:

0 : 0.00000000
0.0 : 0.00000000
0.00 : 0.00000000
0.000000 : 0.00000000
.00000000 : 0.00000000
0.00000000 : 0.00000000
0.000000000000 : 0.00000000
  • 0
    Спасибо! Есть ли где-нибудь схема примитивов и их подходов? Я пришел из Perl, и мне сложно проверить данные из-за различий в доступности методов. В perl я постоянно проверял len (), но Python, None и False не имеют метода len (). (в perl либо будет 0)
  • 0
    Спецификация для языка .format mini, который является методом .str . Документы Python по основным встроенным типам имеют список их методов.
Показать ещё 4 комментария
1

Используйте format/f и форматирование строки (docs):

for zstr in zw:   
    zdec = Decimal(zstr)
    print (zstr, ":", f'{zdec:.8f}') 

0 : 0.00000000
0.0 : 0.00000000
0.00 : 0.00000000
0.000000 : 0.00000000
.00000000 : 0.00000000
0.00000000 : 0.00000000
0.000000000000 : 0.00000000
  • 0
    Почему float(zstr) вместо zdec ?
  • 0
    for zstr in zw: лучше и format(Decimal(zstr)) будет работать.
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню