Найти в Дзене

FloatToStrF

Те, кто программирует на Delphi или Lazarus наверняка знают о функции FloatToStr, которая преобразует вещественное число в строку. В большинстве случаев её можно использовать, однако иногда требуется не просто вывод числа на экран, а вывод числа в определённом формате. И, поскольку делать это приходится довольно часто, то для таких случаев почти в любом языке программирования имеются особые функции. В Паскале (Делфи/Лазарус) такие функции тоже есть. И одна из них - это FloatToStrF, которая преобразует число в строку, используя заданный формат. Синтаксис:

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

Функция преобразует значение числа с плавающей запятой Value в строковое представление в соответствии с настройками параметров Format, Precision и Digits.

Значения параметров Precision и Digits зависят от параметра Format. Формат в основном определяется параметром Format. Он может иметь одно из следующих значений:

ffCurrency

Денежный формат. Value преобразуется в строку с использованием глобальных переменных CurrencyString, CurrencyFormat и NegCurrFormat. Параметр Digits указывает количество цифр после запятой и должен быть в диапазоне от -1 до 18. Если Digits равно -1, то используется значение CurrencyDecimals. Параметр Precision игнорируется.

ffExponent

Научный формат. Value преобразуется в строку с использованием научной записи: Precision - мантисса, Digits - порядок.

ffFixed

Формат с фиксированной запятой. Value преобразуется в строку с использованием записи с фиксированной запятой. Результат состоит из всех цифр целой части Value, перед которыми ставится знак минус, если значение отрицательное. После целой части следует десятичный разделитель (определённый глобальной переменной DecimalSeparator), а затем дробная часть значения, округленная до количества знаков, которое указано в Digits. Если число слишком велико, то результат будет представлен в научной записи. В некоторых источниках пишут, что Precision определяет общее количество цифр в представлении числа, но в моих экспериментах разные значения этого параметра ни на что не влияли, да и в справке про него ничего не сказано.

ffGeneral

Общий числовой формат. Аргумент преобразуется в строку с использованием формата ffExponent или ffFixed, в зависимости от того, какой из них дает самую короткую строку. В конце не будет нулей. Если Value меньше 0,00001 или если количество десятичных знаков, оставшихся после запятой, превышает Precision, то используется научная запись, а Digits - это минимальное количество цифр в показателе степени. В противном случае Digits игнорируются.

ffNumber

Это то же самое, что и ffFixed, за исключением того, что в результирующую строку вставлены разделители тысяч.

Пример:

Как всё это работает, думаю, понятно из примера. Как видите, применять эту функцию будет проще, чем, например, функцию Format, и в то же время FloatToStrF предоставляет больше возможностей, чем функция FloatToStr. Так что в современных языках есть куча разных функций на все случаи жизни. Осталось только найти их в документации, которую, конечно, никто не читает ))) Я, например, обращаюсь к документации только в крайнем случае, потому что иногда быстрее написать функцию самому, чем найти её в справке )))

С другой стороны, некоторые действия приходится выполнять довольно часто (преобразование данных как раз к таким действиям относится), так что основные функции для того, что мы наиболее часто используем, надо просто один раз выучить и экономить потому кучу времени.

На этом всё. Подписывайтесь на канал, чтобы ничего не пропустить.