Следующий код печатает десятичные знаки различных прецизионностей, но возвращается к научной нотации за 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
Пытаться:
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
Используйте 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
float(zstr)
вместо zdec
?
for zstr in zw:
лучше и format(Decimal(zstr))
будет работать.
.str
. Документы Python по основным встроенным типам имеют список их методов.