powered by simpleCommunicator - 2.0.36     © 2025 Programmizd 02
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Форматирование группы float
13 сообщений из 13, страница 1 из 1
Форматирование группы float
    #40116988
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть такая конструкция
Код: pascal
1.
Format('%.2f %.2f, %.2f', [Val1, Val2, Val3], FormatSettings)


это мне не нравится тем, что в строке могут появляться завершающие нули

Такая конструкция
Код: pascal
1.
Format('%.2g %.2g, %.2g', [Val1, Val2, Val3], FormatSettings)

не устраивает категорически, т.к. precission для general формата - это общее количество цифр, а не только десятичных.

Чем можно заменить? Все, что придумал - это такой вариант
Код: pascal
1.
2.
3.
4.
5.
Format('%s %s %s', [
    FloatToStrF(Val1, ffGeneral, 18, 2, FormatSettings),
    FloatToStrF(Val2, ffGeneral, 18, 2, FormatSettings),
    FloatToStrF(Val3, ffGeneral, 18, 2, FormatSettings)
])

с последующим выносом
Код: pascal
1.
FloatToStrF(Val3, ffGeneral, 18, 2, FormatSettings)

в отдельную функцию. Ничего красивее нет?

С уважением, Vasilisk
...
Рейтинг: 0 / 0
Форматирование группы float
    #40117001
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Недотестировал
_Vasilisk_
Код: pascal
1.
FloatToStrF(Val3, ffGeneral, 18, 2, FormatSettings)

нифига не обрезает до двух десятичных символов.

Тогда такой вопрос: как преобразовать float в строку, чтобы в итоге в строке было не более N десятичных значащих цифр?
...
Рейтинг: 0 / 0
Форматирование группы float
    #40117003
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вроде
Код: pascal
1.
FormatFloat('0.##', AVal);

работает
...
Рейтинг: 0 / 0
Форматирование группы float
    #40117129
asutp2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Vasilisk_,

поговорил сам с собой, молодец :-)
...
Рейтинг: 0 / 0
Форматирование группы float
    #40117224
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
asutp2
поговорил сам с собой, молодец :-)
Исходный вопрос остался. Можно ли заставить работать Format()
...
Рейтинг: 0 / 0
Форматирование группы float
    #40117855
Fr0sT-Brutal
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Format достаточно тупой в этом плане.
Кстати, ты так и не объяснил, чего от него хочешь.
...
Рейтинг: 0 / 0
Форматирование группы float
    #40117877
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Vasilisk_
Чем можно заменить? Все, что придумал - это такой вариант

Имхо, такие потребности редкие и разовые - поэтому ничего больше и не нужно.

Если бы такая потребность у меня была бы регулярной, то я придумал бы какой-нибудь MyFormat, который делал бы этот FloatToStrF перед вызовом стандартного. Либо тупо для всех float-параметров, либо по наличию "своего" модификатора в форматной строке.
...
Рейтинг: 0 / 0
Форматирование группы float
    #40117893
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Fr0sT-Brutal
Кстати, ты так и не объяснил, чего от него хочешь.
_Vasilisk_
преобразовать float в строку, чтобы в итоге в строке было не более N десятичных значащих цифр?
Только не для одного числа а для нескольких со всеми плюшками Format
...
Рейтинг: 0 / 0
Форматирование группы float
    #40117908
Bred eFeM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Vasilisk_
это мне не нравится тем, что в строке могут появляться завершающие нули
если это не о "Null-terminated string", тогда к чтобы в итоге в строке было не более N десятичных значащих цифр?
нужно добавить " но не было нулей в конце числа после запятой". Так?
...
Рейтинг: 0 / 0
Форматирование группы float
    #40117915
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Bred eFeM
но не было нулей в конце числа после запятой
Это и называется значащие цифры

Для N = 3
1.1234567 =>1.123
1.1200345 => 1.12
1 => 1
1.99999 => 2
...
Рейтинг: 0 / 0
Форматирование группы float
    #40117936
Bred eFeM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЗНАЧАЩИЕ ЦИФРЫ — в приближенных вычислениях все цифры числа, начиная с первой слева, отличной от нуля, до последней, за правильность которой можно ручаться. Напр., в записи результата взвешивания 0,03020 кг значащими цифрами будут 3, 0, 2 и 0 … Большой Энциклопедический словарь
Для N = 3
1.1234567 =>1.123
1.1200345 => 1.12
1 => 1
1.99999 => 2

Это называется "сокрытие информации" )))
...
Рейтинг: 0 / 0
Форматирование группы float
    #40118090
DHDD
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
    s := '%.4g';
    showmessage(
        Format(s, [1.1234567])
        +sLineBreak+
        Format(s, [1.1200345])
        +sLineBreak+
        Format(s, [1.0])
        +sLineBreak+
        Format(s, [1.99999])
    );


Output:
1,123
1,12
1
2
...
Рейтинг: 0 / 0
Форматирование группы float
    #40118093
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DHDD,
Код: pascal
1.
 Format('%.4g', [123.1234567])
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Форматирование группы float
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]