![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Строка фиксированной ширины с помощью Format [D7, XP]
Alex80 © (2013-12-06 04:54:00)Надо вывести вещественное число в виде строки фиксированной ширины. Если это делать так Format('%8.7f' ... , то вне зависимости от того сколько перед запятой знаков, после запятой всегда будет 7 знаков, поэтому фиксированной ширины не получается.
Если Format('%8.7g' ... - то вроде как надо, всегда ширина 8 знаков, но если в конце числа после запятой нули, то она их сотрёт, и получается число укороченное.
Можно вообще добиться фиксированной ширины через Format? Или никак?
Jeer (2013-12-11 14:06:00) [1]>Похоже, не знает что хочет. Или всё понимает, но сказать не может.
Это очевидно уже с первого поста, зато требует выказывать уважение и предоставить "профессиональный" код :)
Inovet (2013-12-11 13:30:00) [2]> [20] Jeer © (11.12.13 12:40)
> Так, что ли?
Похоже, не знает что хочет. Или всё понимает, но сказать не может.
Jeer (2013-12-11 13:06:00) [3]Тогда смотри на такой вариант:)
Copy(tmp, 1, i - 1) + #46 + Copy(tmp, i + 1, w - i);
Jeer (2013-12-11 12:44:00) [4]или "1234567."
Jeer (2013-12-11 12:40:00) [5]>Практической пользы - ноль.
Дан пример, как можно подойти к решению задачи. Этого достаточно для включения мозга.
>Зато потерянное время на то
Не теряй время на форумах, думай сам.
Ты/Вы - для меня без разницы. Можешь принять как даность.
Ну и что такое фиксированная ширина?
12.34567
1234.567
123456.7
1234567
Так, что ли?
Alex80 (2013-12-11 10:23:00) [6]
> Jeer © (10.12.13 21:56) [18]
> Тебе подали.
Пока ещё вы лично ничего не подали. Практической пользы - ноль. Зато потерянное время на то, чтобы обнаружить несоответствие вашего кода поставленной задаче.
Зато вы мне тыкнули. Я к вам на вы, а вы мне тыкаете.
Jeer (2013-12-10 21:56:00) [7]>Я подаю там где просят.
Ну да, только это ты сюда пришел с вопросом, а не наоборот.
Тебе подали.
Иди и думай.
Alex80 (2013-12-10 20:21:00) [8]
> Это на паперти подают, убогим.
Я подаю там где просят.
Jeer (2013-12-08 18:41:00) [9]>Мне нужна не заготовка, а готовое.
Это на паперти подают, убогим.
sniknik (2013-12-08 16:52:00) [10]> Для меня в 99% случаев хватает трёх-четырёх значащих цифр.
ну и сделай тогда 4 значащих, а оставшийся 1% посылай на хрен... что не пойдет? тогда не морочь голову - нужно 100%.
Inovet (2013-12-08 16:29:00) [11]> [13] Юрий Зотов © (08.12.13 13:20)
> В компьютере 99% не бывает. Или сто, или ноль.
Двоичные они, однако.
Юрий Зотов (2013-12-08 13:20:00) [12]> Alex80 (08.12.13 13:05) [12]
> Человек задающий ширину сам знает диапазон и точность
> которая ему нужна.
Убедили. Задавайте.
> в 99% случаев
В компьютере 99% не бывает. Или сто, или ноль.
Alex80 (2013-12-08 13:05:00) [13]
> Чтобы все числа показывались оптимальным образом, нужно
> заранее знать их диапазон, а если этот диапазон заранее
> неизвестен, то придется ориентироваться на максимальный.
Человек задающий ширину сам знает диапазон и точность которая ему нужна. Для меня в 99% случаев хватает трёх-четырёх значащих цифр. А степени за E9 не выходят.
Юрий Зотов (2013-12-08 12:25:00) [14]> Alex80 (08.12.13 10:25) [10]
Чтобы все числа показывались оптимальным образом, нужно заранее знать их диапазон, а если этот диапазон заранее неизвестен, то придется ориентироваться на максимальный. Например, для чисел double:
<знак><d.dddddddddddddd>E<знак><ddd>
что соответствует формату -22.15e
Но лидирующий знак "плюс" придется добавлять руками.
Alex80 (2013-12-08 10:25:00) [15]
> Попробуйте, например, %20.7f (и не забудьте, что нужен моноширинный
> шрифт).
Понятно, что если отвести под число километр, то поместится всё, что угодно. Но нужен компактный вывод, чтобы все числа показывались оптимальным образом в заданной ширине.
Например
1234E-9
4 значащих цифры, и степень. Ширина - 7.
Alex80 (2013-12-08 10:18:00) [16]
> Jeer © (07.12.13 13:39) [5]
> Считай это заготовкой для тебя:)
Мне нужна не заготовка, а готовое. профессиональное решение. Вряд ли я первый кто озадачился этой проблемой.
Jeer (2013-12-07 23:08:00) [17]Лишний тренинг не помешает, а мне проще так - я их наизусть помню:)
Дмитрий СС (2013-12-07 23:02:00) [18]
> i := Pos(#46,Result);
Зачем писать код символа, когда можно сам символ? Любите издеваться над тем, кто потом будет разбираться в вашем коде и над собой?)
Юрий Зотов (2013-12-07 21:54:00) [19]> Alex80 (06.12.13 04:54)
> Надо вывести вещественное число в виде строки фиксированной
> ширины. Если это делать так Format('%8.7f' ... , то вне
> зависимости от того сколько перед запятой знаков, после
> запятой всегда будет 7 знаков, поэтому фиксированной ширины
> не получается.
Получается, только общую ширину (первое число) надо задавать не 8, а больше (7 знаков дробной части, плюс разделитель - это уже 8 и получается, что места для целой части Вы не оставили). Попробуйте, например, %20.7f (и не забудьте, что нужен моноширинный шрифт).
Jeer (2013-12-07 13:39:00) [20]Считай это заготовкой для тебя:)