Оператор '%2.2f'
будет выполнять одинаковое количество десятичных знаков независимо от количества значащих цифр в номере. Вам нужно будет определить это по номеру и вручную форматировать. Вы можете сократить это, напечатав строку с большим количеством знаков после запятой и убрав все завершающие нули.
Тривиальная функция для этого может выглядеть примерно так: intel_format()
в приведенном ниже примере:
import re
foo_string = '%.10f' % (1.33333)
bar_string = '%.10f' % (1)
print 'Raw Output'
print foo_string
print bar_string
print 'Strip trailing zeros'
print re.split ('0+$', foo_string)[0]
print re.split ('0+$', bar_string)[0]
print 'Intelligently strip trailing zeros'
def intel_format (nn):
formatted = '%.10f' % (nn)
stripped = re.split('0+$', formatted)
if stripped[0][-1] == '.':
return stripped[0] + '0'
else:
return stripped[0]
print intel_format (1.3333)
print intel_format (1.0)
При запуске вы получите такой вывод:
Raw Output
1.3333300000
1.0000000000
Strip trailing zeros
1.33333
1.
Intelligently strip trailing zeros
1.3333
1.0