Форум: "Основная";
Текущий архив: 2003.04.07;
Скачать: [xml.tar.bz2];
ВнизЭкспонента и мантисса Найти похожие ветки
← →
alxx (2003-03-27 10:10) [0]Есть real число 0.01234, которое представляется как 1.234E-2. Как получить 1.234 и -2?
Подозреваю, что вопрос туповат, но как-то хотелось бы попроще и без извращений. Пробовал функцию frExp - какую-то фигню получил.
← →
MBo (2003-03-27 10:14) [1]log10
← →
alxx (2003-03-27 10:18) [2]E:=log10(X);
M:=X/Power(10,E);
Так?
← →
REA (2003-03-27 10:19) [3]Может подойдет?
Separates the Mantissa and Exponent of X
Unit Math
Delphi syntax:
procedure Frexp(const X: Extended; var Mantissa: Extended; var Exponent: Integer) register;
← →
alxx (2003-03-27 10:23) [4]А попробовать не хотите?
Если сделать так: Frexp(1,M,E);
получаем M=0.5, E=1
?????????
← →
REA (2003-03-27 10:32) [5]Ну не нравится такое, тогда
Unit SysUtils
procedure FloatToDecimal(var DecVal: TFloatRec; const Value; ValueType: TFloatValue; Precision, Decimals: Integer);
type TFloatRec = record
Exponent: Smallint;
Negative: Boolean;
Digits: array[0..20] of Char;
end;
← →
Dikobrazz (2003-03-27 10:45) [6]Есть функция FloatToDecimal, которая возвращает отдельно мантису и экспоненту в специальной структуре.
procedure Test;
var
X: Extended;
FRec: TFloatRec;
A,B: string;
begin
X:=0.012345;
FloatToDecimal(FRec,X,fvExtended,10,10);
A:=FRec.Digits;
B:=IntToStr(FRec.Exponent);
ShowMessage(A+";"+B);
end;
← →
MBo (2003-03-28 13:46) [7]var d:double;
m:extended;
e:integer;
begin
d:=1.234E-2;
E:=Floor(Log10(Abs(d)));
M:=d/IntPower(10,E);
label1.caption:=format("%8.5f %d",[M,E]);
Frexp все верно дает, только не в десятичной системе, а в двоичной, соответственно машинному представлению.
Единица хранится как 0.5*2^1
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2003.04.07;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.007 c