Описание Функция преобразовывает число с плавающей запятой Value в его строковое представление, используя заданный формат. Параметр Precision определяет количество знаков в результирующем значении, которое должно находиться в следующих пределах:
Тип
Precision
Тип
Precision
Тип
Precision
Single
=0.00001. В противном случае, применяется научный формат, а параметр Digits определяет минимальное число цифр в экспоненте (0.. 4).
ffExponent
Научный формат. Число преобразуется в строку формата «-x.xxx…E+xxxx». Строка начинается со знака «-» (если число отрицательное). Десятичной точке всегда предшествует одна цифра. Параметр Precision определяет общее количество десятичных цифр, стоящих до символа экспоненты «E» (включая цифру слева от десятичного разделителя). За символом экспоненты следует знак плюс или минус и до 4 цифр, определяющих степень экспоненты. Минимальное число цифр в экспоненте указывается в параметре Digits.
ffFixed
Фиксированный формат. Значение преобразуется в строку вида «-ххх.ххх…». Если число отрицательное, то впереди строки будет поставлен знак «-«. Десятичной точке всегда предшествует минимум одна цифра. Количество значащих цифр после десятичной точки (0…18) указывается в параметре Digits. Если количество разрядов слева от разделителя превышает значение, указанное в параметре Precision, то для форматирования будет использоваться научный формат (ffExponent).
ffNumber
Числовой формат. Значение будет преобразовано в строку следующего вид «-х,ххх,ххх.ххх…». Данный формат аналогичен формату ffFixed, за исключением того, что полученная строка будет содержать еще и разделители тысяч.
ffCurrency
Денежный формат. Значение преобразовывается в строку, представляющую денежную величину. Количество значащих цифр после десятичной точки (0…18) определяется параметром Digits. Преобразование управляется глобальными переменными CurrencyString, CurrencyFormat, DecimalSeparator NegCurrFormat и ThousandSeparator, значения которых устанавливаются в диалоговом окне ‘Язык и стандарты’ панели управления Windows.
Пример var Sum: Extended; SumStr: string; begin Sum:= 10255.2; SumStr:= FloatToStrF( Sum, ffCurrency,18,2); MessageDlg( SumStr, mtInformation, [mbOk], 0); end;
Справочник по компонентам Delphi. Часть 1 Страница 10. Функции преобразования чисел с плавающей точкой
Функции преобразования чисел с плавающей точкой
Преобразование числа с плавающей точкой (далее в этом разделе просто числа) в текстовую строку и обратно всегда было достаточно сложной задачей. Для ее решения в Delphi есть функции сразу трех уровней сложности.
Первый — самый простой — представлен функцией FloatToStr:
function FloatToStr ••-••-alue : Extended): string;
Число, заданное параметром Value, преобразуется в возвращаемую функцией строку. Формат преобразования соответствует типу преобразования g функции Format, причем длина выходной строки принимается равной 15 символам.
Больше возможностей для управления форматом вывода дает функция:
Здесь Value — преобразуемое значение, Format — один из предопределенных форматов. Хотя этот параметр имеет тип TFloatFormat, он имеет очень много общего с типами преобразований в функции Format (ссылки на них есть в предлагаемой таблице). Параметр Precision задает общее число символов в выходной строке и не должен превышать 7 для фактического параметра типа Single, 15 — для Double и 18 — для Extended. Digits — это параметр, интерпретируемый в зависимости от значения параметра Format:
Научный формат, соответствует типу е. Precision задает общее число символов, Digits — число знаков в показателе экспоненты <0-4).
Формат с фиксированной точкой; соответствует типу f. Precision задает общее число символов, Digits — число знаков после запятой (0-18). Если значение Precision мало для представления числа, используется научный формат.
Обобщенный формат, соответствует типу д (см. описание функции Format).
Отличается от fTFixed наличием символов-разделителей тысяч (см. тип преобразования п).
Соответствует типу преобразования т. Параметр Digits задает число символов после десятичной точки в выходной строке (0-18).
В случае, когда в функцию переданы значения Value, соответствующие особым случаям сопроцессора («не-число», плюс и минус бесконечность), она возвращает соответственно строки ‘NAN’, ‘INF’ и ‘-INF’.
Наконец, возможность полного управления форматом предоставляет функция FormatFloat:
Она преобразует число в строку в соответствии со спецификатором формата, содержащимся в параметре Format. Правила его задания следующие:
Поле для цифры. Если форматируемая величина имеет в этой позиции цифру, то вставляется она, в противном случае вставляется 0.
Поле для цифры. Если форматируемая величина имеет в этой позиции цифру, то вставляется она, в противном случае ничего не вставляется.
Поле для десятичной точки. Сюда вставляется символ, определенный константой DecimalSeparator.
Поле для разделителя тысяч. Оно означает, что группы по три цифры, считая влево от десятичной точки, будут разделяться специальным символом (он задан константой ThousandSeparator). Местоположение поля может быть произвольным.
Признаки представления числа в научном формате. Появление любого из этих аргументов означает, что число будет преобразовано с характеристикой и мантиссой. Вставка нулей после такого аргумента позволяет определить ширину мантиссы. Разница между Е+, е+ и Е-, е-в том, что в первых двух случаях ставится «+» при выводе положительных чисел.
Символы, заключенные в обычные или двойные кавычки, напрямую включаются в выходную строку.
Разделяет спецификаторы формата для положительных, отрицательных и нулевых чисел.
1. Число всегда округляется до той точности, которую позволяет заданное программистом количество полей для размещения цифр (‘0’ и ‘#’).
2. Если у преобразуемого числа слева от десятичной точки получается больше значащих цифр, чем задано полей для их размещения, то цифры все равно добавляются в строку. Если полей недостаточно справа от точки, происходит округление.
3. Символ ‘;’ позволяет задать три разных формата вывода для чисел с разным знаком. При различном количестве форматов они применяются следующим образом:
• один: применяется для всех чисел;
• два: первый применяется для чисел, больших или равных нулю, второй — для отрицательных;
• три: первьш применяется для положительных, второй — для отрицательных чисел, третий — для нуля.
Если форматы для отрицательных чисел или нуля пусты, применяется формат для положительных чисел.
Если пуст формат для положительных чисел или спецификатор формата вообще не задан (пустая строка), то числа форматируются согласно обобщенному формату (как в функции FloatToStr). Такое форматирование применяется также в случае, если число значащих цифр слева от десятичной точки превысило 18 и не задан научный формат.
Применение спецификатора иллюстрируется в таблице на примере преобразования четырех чисел:
Пользователь воспринимает это так, будто вводит сразу цифры, однако мы то знаем, что это строка только символов, изображающая число. И чтобы действительно превратить ее в число, приходится использовать преобразования типов. Некоторыми функциями, которые служат этим целям, мы уже пользовались, давайте упорядочим эти знания и изучим новые функции.
IntToStr()
StrToInt()
FloatToStr()
Эта функция также предназначена для всех типов вещественных чисел.
StrToFloat()
FormatFloat()
Она имеет два параметра – строку формата и само число. Строка может содержать следующие форматы:
Таблица 15.1. Возможные форматы FormatFloat()
Строка, указываемая в формате
Примеры чисел
1234
-1234
0,5
0
0
1234
-1234
1
0
0.00
1234,00
-1234,00
0,50
0,00
#.##
1234
-1234
0,5
0
#,0.00
1 234,00
-1 234,00
0,50
0,00
Есть и другие варианты форматов, например, для представления числа в экспонентной форме, но они, как правило, не используются.
Поясним строку форматов подробней.
В первом случае показаны варианты возвращаемых строк, если строка форматов вообще не указана.
«Решетка» (#) работает также, как «ноль», с той разницей, что если на этом месте не окажется цифры, то «решетка» ничего не выведет, а «ноль» подставит в это место ноль.
Знак запятая здесь указывают для удобного отображения разрядности числа. Например, миллион будет выглядеть как строка ‘1 000 000’. Заметим, что на само число этот формат не оказывает никакого влияния, он нужен только для того, чтобы выводить число в удобочитаемой форме в виде строки.
Вопросы и ответы
Я записан на программу. Куда высылать договор и диплом?
Во-первых, разрешите поблагодарить Вас за замечательный курс, который я прошёл с удовольствием.
В 32 лекции при изучении работы с индексами и фильтрами у меня возникла ошибка.
Исходные данные: система Windows 10.
Database Desktop не заработал (ни под админом, ни в режиме совместимости).
Поэтому сделал базу в MS Access, подключил её к приложению через ADO Connection и таблицы ADO Table + DataSource. Провайдер Microsoft.Jet.OLEDB.4.0.
Всё работает как надо, кроме индексов (сортировки) и фильтрации.
Текст ошибки: «Текущий поставщик не поддерживает необходимый интерфейс для функции ‘Index’ «.
Советы из форумов не сработали.
Пробовал: устанавливать курсор на стороне сервера, перечислять индексируемые поля в IndexFieldNames, выбирать других провайдеров OLE DB. Ничего не получилось.
Может подскажете какой-нибудь выход?
В рабочей программе, выберу другую СУБД, но хочется ведь чтобы и учебные примеры заработали (для меня это значит, что тема усвоена).
С уважением, Аюпов Рустэм.
Update: решил для себя эту проблему установкой в виртуалку WinXP 32. Database Desktop завёлся, всё получилось.