|
|
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; |
[ Оглавление ]
|