![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Строка фиксированной ширины с помощью Format [D7, XP]
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