Функция FormatFloat( const Format: string; Value: Extended ): string;
Модуль: SysUtils
Описание
Функция преобразовывает значение числа с плавающей запятой Value в строку, используя маску, определенную параметром Format. Маска может содержать следующие символы форматирования:
Символ |
Описание |
0 |
В данную позицию записывается цифра. Если исходное значение в данной позиции содержит цифру, то она записывается в соответствующую позицию результирующей строки, иначе в данную позицию будет записан '0'. |
# |
В данную позицию записывается цифра. Если исходное значение в данной позиции содержит цифру, то она записывается в соответствующую позицию результирующей строки, иначе в данную позицию ничего не записывается. |
. |
Данный символ, встречающийся в маске первый раз, определяет расположение десятичного разделителя. Любой последующий символ '.' игнорируется. Символ, который будет использован в качестве десятичного разделителя в результирующей строке, определяется глобальной переменной DecimalSeparator. |
, |
Если маска содержит данный символ, то в отформатированной строке, между каждой группой из трех цифр слева от десятичной точки, будут вставлены разделители тысяч. Положение и количество символов ',' в маске на результат не влияет. Символ, который будет использован в качестве разделителя тысяч, определяется глобальной переменной ThousandSeparator. |
E+ |
Экспоненциальный формат. Если любая из строк: 'E+', 'E-', 'e+', 'e-', содержится в строке формата, то результирующее значение будет представлено в экспоненциальном виде. За одной из вышеуказанных строк может следовать до четырех символов '0', определяющих мини-мальное число цифр в экспоненте. |
'xx' "xx" |
Символы, заключенные в двойные или одиночные кавычки, не форматируются и выводятся один к одному как есть. |
; |
Отделяет в маске варианты форматирования для положительного, отрицательного и нулевого значения (См. далее). |
Позиции крайнего левого '0', расположенного до десятичной точки, и крайнего правого '0' после десятичной точки в маске определяют количество цифровых знаков, которые обязательно должны присутствовать в отформатированной строке. Форматируемое значение всегда округляется до разрядов, которые содержат символы '0' или '#' справа от десятичной точки. Если маска не содержит десятичной точки, то форматируемое значение округляется к ближайшему целому числу. Если форматируемое значение слева от десятичного разделителя содержит больше цифр, чем указано в маске, то "лишние" цифры выводятся до первого символа форматирования. Для того, чтобы допустить несколько вариантов форматирования, различных для положительного, отрицательного и нулевого значения, маска может состоять из одного, двух или трех разделов, разделенных точками с запятой.
Один раздел: строка формата применяется ко всем значениям.
Два раздела: первый раздел применяется к положительным и нулевым значениям, а второй - к отрицательным значениям.
Три раздела: первый раздел применяется к положительным значениям, второй - к отрицательным значениям, третий - к 0.
Если раздел для отрицательных значений или для значения 0 пуст, то используется форматирование, определенное для положительных значений. Если раздел для положительных значений пуст, или вся строка формата пуста, то значение форматируется, используя общее форматирование чисел с плавающей запятой (вызов функции FloatToStrF с параметром Precision=15 и Format=ffGeneral). Данное форматирование используется так же, когда значение содержит более 18 разрядов слева от десятичной точки, а в маске не определен экспоненциальный формат.
Пример
var
S: string;
begin
S:= FormatFloat( '#.##', Pi); // S:= '3.14'
MessageDlg( 'Pi:= '+ S, mtInformation, [mbOk], 0);
end; |