Отформатируйте float в Python с максимальным количеством знаков после запятой и без дополнительного заполнения нуля
Мне нужно сделать форматирование десятичных знаков в python. Предпочтительно, значение с плавающей запятой должно всегда показывать, по крайней мере, начальное 0 и одно десятичное место. Пример:
Input: 0
Output: 0.0
Значения с более десятичными знаками должны продолжать показывать их, пока не получится 4. Итак:
Input: 65.53
Output: 65.53
Input: 40.355435
Output: 40.3554
Я знаю, что я могу использовать {0.4f}, чтобы распечатать его до четырех знаков после запятой, но он будет помещаться с ненужными 0. Есть ли код форматирования, чтобы сообщить ему распечатать до определенного количества десятичных знаков, но оставить их пустыми, если нет данных? Я считаю, что С# выполняет это с чем-то вроде:
floatValue.ToString("0.0###")
Где # символ обозначает место, которое может быть пустым.
Ответы
Ответ 1
То, что вы запрашиваете, должно быть обращено к методам округления, таким как функция round
, и пусть число с плавающей точкой естественно отображается с его строковым представлением.
>>> round(65.53, 4)
'65.53'
>>> round(40.355435, 4)
'40.3554'
>>> round(0, 4)
'0.0'
Ответ 2
Извините, лучшее, что я могу сделать:
' {:0.4f}'.format(1./2.).rstrip('0')
Исправлено:
ff=1./2.
' {:0.4f}'.format(ff).rstrip('0')+'0'[0:(ff%1==0)]
Ответ 3
>>> def pad(float, front = 0, end = 4):
s = '%%%s.%sf' % (front, end) % float
i = len(s)
while i > 0 and s[i - 1] == '0':
i-= 1
if s[i - 1] == '.' and len(s) > i:
i+= 1 # for 0.0
return s[:i] + ' ' * (len(s) - i)
>>> pad(0, 3, 4)
'0.0 '
>>> pad(65.53, 3, 4)
'65.53 '
>>> pad(40.355435, 3, 4)
'40.3554'