Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Строка фиксированной ширины с помощью Format [D7, XP]


Страницы:   1 2

Alex80 ©   (2013-12-06 04:54:00) 

Надо вывести вещественное число в виде строки фиксированной ширины. Если это делать так Format('%8.7f' ... , то вне зависимости от того сколько перед запятой знаков, после запятой всегда будет 7 знаков, поэтому фиксированной ширины не получается.

Если Format('%8.7g' ... - то вроде как надо, всегда ширина 8 знаков, но если в конце числа после запятой нули, то она их сотрёт, и получается число укороченное.

Можно вообще добиться фиксированной ширины через Format? Или никак?


Alex80   (2013-12-07 08:39:00) [21]

Да, цифры типа '0.00000001' округляются до нуля, хотя могли бы влезть или показываться в виде 1E-8. И опять же 1E-8 - слишком короткая строка.


Alex80   (2013-12-07 08:33:00) [22]


> Jeer ©   (06.12.13 10:16) [2]
> Иногда проще самому ручками, чем в справку лезть:)

Получается вот такая байда:


000.10000
001.00000
010.00000
100.00000
1000.00000
1E10
10000000.00000


Куча цифр сдвинута, хотя 1000.00000
и 10000000.00000 вполне могли бы поместиться в заданную ширину.
Плюс спереди зачем-то нули. Куда полезнее показать бОльшую точность после запятой, чем пририсовывать спереди нули.


Jeer   (2013-12-06 10:16:00) [23]

Иногда проще самому ручками, чем в справку лезть:)

function Float2StrFixWidth(v: extended; p,d: integer): string;
var i: integer;
begin
  Result := FloatToStrF(v, ffFixed, p+d,d);
  i := Pos(#46,Result);
  if i > 0 then Result := DupeString(#48, p - i +1 ) + Result;
end;

Длина строки (включая лидирующие нули) перед точкой обеспечивается параметром p, а после точки - d


Inovet   (2013-12-06 06:09:00) [24]

Посмотри ещё FormatFloat


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо