Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Вывод вещественного числа, .... 
:(
    Опции темы
Yanochka
  Дата 29.12.2004, 19:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Fallen Angel
***


Профиль
Группа: Участник Клуба
Сообщений: 1256
Регистрация: 7.10.2004
Где: Москва

Репутация: нет
Всего: 79



Для вывода вещественного числа с ограниченным количеством разрядов в дробной части числа в языке есть специальная функция преобразования строки в вещественное число. Назовите эту функцию и напишите все значения атрибута, определяющего формат записи вещественного числа:____________


--------------------
user posted image 
PM MAIL ICQ   Вверх
Alex
Дата 29.12.2004, 20:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 4147
Регистрация: 25.3.2002
Где: Москва

Репутация: 80
Всего: 162



Преобразовывает действительное значение в строку, используя заданный формат, точность и число цифр

Модуль Sysutils

Объявление

Код

type TFloatFormat = (ffGeneral, ffExponent, ffFixed,  ffNumber, ffCurrency);

function FloatToStrF(Value: Extended; Format: TFloatFormat; Precision, Digits: Integer): string;


Описание
Функция FloatToStrF преобразовывает действительное значение Value в строку, используя заданный формат Format, точность Precision и число цифр Digits. Параметр Value - действительная константа или выражение. Возможные значения параметра Format означают следующее:

ffGeneral - Основной числовой формат
ffExponent - Научный формат
ffFixed - Формат с фиксированной запятой
ffNumber - Числовой формат
ffCurrency - Монетарный формат
Подробное описание всех этих форматов см. в TFloatFormat.

Параметр Precision определяет точность преобразовываемого значения. Значение Precision должно быть не более 7 при преобразовании типа Single, не более 15 для Double, не более 18 для Extended.
Параметр Digits совместно с Format определяют форматирование строки. Подробнее см. в описании TFloatFormat.

Если преобразовываемое выражение окажется не числом, функция вернет значение "NAN". Если преобразовываемое значение превышает по модулю величину, допустимую для объявленного типа данных, функция вернет значение "INF" (бесконечность) или "-INF" (минус бесконечность).



Определяет формат преобразования действительных чисел

Модуль Sysutils

Объявление

Код

type TFloatFormat = (ffGeneral, ffExponent, ffFixed, ffNumber, ffCurrency);


Описание
Тип TFloatFormat определяет коды форматирования чисел с плавающей запятой в функциях FloatToText, FloatToStrF, FloatToDecimal, TextToFloat. В этих функциях одновременно с форматом указываются два параметра: Precision - точность, и Digits - число цифр.
Возможные значения формата определяются следующими правилами форматирования:


ffGeneral - Основной числовой формат. Число преобразуется по формату с фиксированной точкой или научному в зависимости от того, какой из них оказывается короче. Начальные нули удаляются, десятичная точка ставится только при необходимости. Фиксированный формат используется, если число разрядов слева от точки не больше указанной точности Precision и если значение не меньше 0.00001. В противном случае используется научный формат, в котором параметр Digits определяет число разрядов степени - от 0 до 4
ffExponent - Научный формат. Число преобразуется в строку вида "-d.ddd...E+dddd". Общее число цифр, включая одну перед десятичной точкой, задается параметром Precision. После символа "E" всегда следует знак "+" или "-" и до четырех цифр. Параметр Digits определяет минимальное число разрядов степени - от 0 до 4
ffFixed - Формат с фиксированной точкой. Число преобразуется в строку вида "-ddd.ddd...". По крайней мере одна цифра всегда предшествует десятичной точке. Число цифр после десятичной точки задается параметром Digits, который может лежать в пределах от 0 до 18. Если число разрядов слева от десятичной точки больше указанного параметром Precision, то используется научный формат
ffNumber - Числовой формат. Число преобразуется в строку вида "-d,ddd,ddd.ddd...". Данный формат совпадает с ffFixed за исключением наличия в нем разделителей тысяч
ffCurrency - Монетарный формат. Число преобразуется в строку, отображающую денежную сумму. Формат контролируется глобальными переменными CurrencyString, CurrencyFormat, NegCurrFormat, ThousandSeparator, DecimalSeparator, задаваемыми для монетарного формата разделом Currency Format элемента International Контрольной панели Windows. Число цифр после десятичной точки задается параметром Digits, который может лежать в пределах от 0 до 18
Для всех форматов действительные символы, используемые в качестве десятичной точки и разделителя тысяч определяются глобальными переменными DecimalSeparator и ThousandSeparator.


Если S - строка, а R - действительное число или выражение, то оператор
Код

S := FloatToStr( R );

даст следующие результаты при разных значениях R:

Цитата
R             S
-3           -3
5.1E20    5,1E20
Sqrt(2)   1,4142135623731
1E5000   INF

Оператор
Код

S := FloatToStrF(R,ffGeneral,7,0);

даст те же результаты, но для корня из 2 число цифр результата не превысит заданного значения 7: 1,414214. Как правило, формат ffGeneral с ограниченным числом цифр наиболее удачен для большинства применений.


--------------------
Написать можно все - главное четко представлять, что ты хочешь получить в конце. 
PM Skype   Вверх
dm9
Дата 29.12.2004, 21:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дмитрий Копытин
****


Профиль
Группа: Vingrad developer
Сообщений: 3876
Регистрация: 22.7.2002
Где: Москва

Репутация: 6
Всего: 137



Альтернатива:

Код
Memo1.Text := Format ('%.5f', [t]);

5 - число знаков после запятой, t - вещественная переменная.

Код
Memo1.Text := Format ('%.'+IntToStr(n)+'f', [t]);

n - число знаков после запятой, t - вещественная переменная.

У функции format есть ещё много интересных возможностей.
PM MAIL ICQ   Вверх
Yanochka
Дата 29.12.2004, 21:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Fallen Angel
***


Профиль
Группа: Участник Клуба
Сообщений: 1256
Регистрация: 7.10.2004
Где: Москва

Репутация: нет
Всего: 79



Alex, dm9
Большое спасибо
Записала вто как
Цитата
Format('%8.3f', [Count(Studs)])

не смотря на то что скажет препод smile

Это сообщение отредактировал(а) Yanochka - 29.12.2004, 21:48


--------------------
user posted image 
PM MAIL ICQ   Вверх
Alex
Дата 29.12.2004, 21:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 4147
Регистрация: 25.3.2002
Где: Москва

Репутация: 80
Всего: 162



dm9, боюсь ее препод скажит, что это слишком заумно smile


--------------------
Написать можно все - главное четко представлять, что ты хочешь получить в конце. 
PM Skype   Вверх
dm9
Дата 29.12.2004, 21:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дмитрий Копытин
****


Профиль
Группа: Vingrad developer
Сообщений: 3876
Регистрация: 22.7.2002
Где: Москва

Репутация: 6
Всего: 137



Yanochka, если так:

Код
Format('%-8.3f', [Count(Studs)])


то циферка будет прижиматься к левому краю. Обычно так удобнее бывает smile
Добавлено @ 21:58
Alex, надо сказать, о возможности передавать в ф-цию несколько переменных через одну я узнал только из хелпа по ф-ции Format. Интересная функция smile

Это сообщение отредактировал(а) dm9 - 29.12.2004, 21:59
PM MAIL ICQ   Вверх
Alex
Дата 29.12.2004, 22:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 4147
Регистрация: 25.3.2002
Где: Москва

Репутация: 80
Всего: 162



dm9, просто
Код
Edit1.Text:= Format('%8.3f', [Count(Studs)]);

Из http://forum.vingrad.ru/index.php?showtopi...hl=Задача&st=15 smile


--------------------
Написать можно все - главное четко представлять, что ты хочешь получить в конце. 
PM Skype   Вверх
dm9
Дата 29.12.2004, 22:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дмитрий Копытин
****


Профиль
Группа: Vingrad developer
Сообщений: 3876
Регистрация: 22.7.2002
Где: Москва

Репутация: 6
Всего: 137



Понял smile

PS Оффтоп, конечно, но прочитал задание в той теме и мне стало очень хорошо от того, что мне такое программировать не надо smile)
PM MAIL ICQ   Вверх
Cheba
Дата 30.12.2004, 01:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pointless one
***


Профиль
Группа: Vingrad developer
Сообщений: 1777
Регистрация: 27.11.2003
Где: /dev/null

Репутация: 1
Всего: 62



К этому заданию слегка не подходит, но все же...
В Паскале был, так называемый, форматированый вывод чисел:
Код
writeln(i:8:2);

Где первое число задает количество выводимых цифр, а второе количество цифр в дробной части.

К сожалению, эта конструкция в Delphi работает только с write/writeln. Больше мне нигде не удалось ее задействовать...
PM MAIL ICQ   Вверх
Dimich
Дата 30.12.2004, 09:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 247
Регистрация: 25.8.2004
Где: Брянск

Репутация: 1
Всего: 7



Как вариант могу предложить еще процедуру
Код

procedure Str(X [: Width [: Decimals ]]; var S);

--------------------
Не работает - исправь, работает - не трогай!!!
PM MAIL ICQ Jabber   Вверх
dm9
Дата 30.12.2004, 13:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дмитрий Копытин
****


Профиль
Группа: Vingrad developer
Сообщений: 3876
Регистрация: 22.7.2002
Где: Москва

Репутация: 6
Всего: 137



Dimich, интересно smile Я не знал, что такая ф-ция есть.
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0659 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.