Функции и процедуры Delphi. Справочник.

 

Не знаешь, где искать?
Читай Delphi FAQ!

 


IV. ФУНКЦИИ И ПРОЦЕДУРЫ ДЛЯ РАБОТЫ С ПЕРЕМЕННЫМИ РАЗЛИЧНЫХ ТИПОВ ДАННЫХ

1. Преобразование чисел с плавающей запятой


Процедура FloatToDecimal(
var DecVal: TFloatRec;
const Value;
ValueType: TFloatValue;
Precision, Decimals: Integer );


Модуль: SysUtils

type TFloatValue = (fvExtended, fvCurrency);

type TFloatRec = record
    Exponent: Smallint;
    Negative: Boolean;
    Digits: array[0..20] of Char;
    end;

Описание
Процедура преобразовывает число с плавающей запятой Value в представление, удобное для дальнейшего форматирования.
Value - переменная типа Extended или Currency в зависимости от значения параметра ValueType. Результат преобразования возвращается в переменной Result и имеет тип TFloatRec.
Параметр Precision для значений типа Extended определяет количество (1..18) значащих цифр в результирующем значении.
Если для исходного значения определен тип Currency, то оно преобразовывается с точностью 19 знаков. а параметр Precision в данном случае игнорируется. Параметр Decimals определяет максимальное число разрядов после запятой. От значений Precision и Decimals зависит то, каким образом будет округляться результат.
Результат преобразования возвращается в переменной типа TFloatRec:

Поле Значение
Exponent Данное значение определяет позицию десятичного разделителя. Если абсолютное значение числа ¦Value¦ >= 1, то значение Exponent>0, и наоборот, если ¦Value¦ < 1, то Exponent<0. Если в параметре Value указано значение NAN (not-a-number), т.е. значение не является числом, то значение Exponent устанавливается равным -32768. Если Value представляет собой положительную (INF) или отрицательную (-INF) бесконечность, то значение Exponent устанавливается равным 32767.
Negative Определяет знак числа. Если Value<0, то в данное поле записывается True, а если Value>=0, то False
Digits В данное поле записывается строковое (в формате PChar) представление числа без символа десятичного разделителя (положение разделителя определяется значением поля Exponent). Значение может содержать до 18-ти (для типа Extended) или 19-ть (для типа Currency) десятичных символов, завершаемых нулевым символом конца строки. Нули, стоящие в конце числа, не записываются. Если исходное значение представляет собой NAN (не число), INF, -INF (бесконечность) или равно 0, то поле Digits содержит только символ конца строки.

Пример
var
   Res: TFloatRec;
   X: Extended;
begin
   X:= -987.654321;
   FloatToDecimal( Res, X, fvExtended, 9, 1);
     { Res.Exponent:= 3; Res.Negative:= True; Res.Digits:= 9877 }
end;


[Вернуться к содержанию]

 


Рейтинг@Mail.ru