Форматирование float в python также перед десятичным разделителем - PullRequest
0 голосов
/ 21 сентября 2011

Я форматирую поплавки следующим образом:

logFile.write("Loadcase: %6i %2i %4i %2.2f %2.2f %4f + %4f -> " %(i, freq, amp, cutoff, end_time, penalty_inc, stab_inc))

и результат будет таким:

Loadcase:   5001  1   50 19.00 20.00 0.000000 + 0.000000 -> 0.495386 (ok)
Loadcase:   5002  2   50 9.50 10.00 0.000000 + 0.000000 -> 0.255045 (ok)
Loadcase:   5003  3   50 6.33 6.67 0.000000 + 0.000000 -> 0.151464 (ok)
Loadcase:   5005  5   50 3.80 4.00 0.000000 + 0.000000 -> 0.116979 (ok)
Loadcase:   5010 10   50 1.90 2.00 0.000000 + 0.000000 -> 0.081181 (ok)

Я просто хочу, чтобы поплавки были выровнены по правому краю и вставлены некоторые пробелы при необходимости. Я действительно хочу, чтобы таблица была хорошо выровнена. Мое предположение о написании% 2.2f, похоже, игнорируется.

Я не могу использовать numpy по техническим причинам.

Ответы [ 3 ]

7 голосов
/ 21 сентября 2011

Вы неправильно понимаете, что означает %2.2f. Это означает «дать поплавку всего 2 столбца и отобразить 2 позиции после радикса». Возможно, вы хотите %5.2f вместо.

2 голосов
/ 21 сентября 2011

Строка формата "%4.2f" говорит: отформатируйте 2 цифры после радикс и используйте не менее 4 символов для полной строки . Так

 "%4.2f" % 1.1   -->  " 1.1"
 "%4.2f" % 11.1  -->  "11.1"
 "%4.2f" % 111.1 -->  "111.1"

В вашем случае вы установили 4 выше достаточно высоко.

2 голосов
/ 21 сентября 2011

Синтаксис

% fieldwidth . precision conversiontype

Итак, если вы хотите оставить пробел и показать 2 десятичных знака, попробуйте

%8.2f

См. документацию по Python для полного обзора.

...