typeTFloatRec = 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;