Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.04.07;
Скачать: CL | DM;

Вниз

Экспонента и мантисса   Найти похожие ветки 

 
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;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.016 c
3-19475
zloy_dima
2003-03-19 14:16
2003.04.07
ADO


1-19614
Seryj
2003-03-25 11:31
2003.04.07
Цвет ячейки в Excel


6-19743
Vitalij
2003-02-13 16:11
2003.04.07
Web-сервер


14-19805
OxOTHuK
2003-03-20 07:48
2003.04.07
Pointer s ака Указатели


7-19906
Alexandr3
2003-02-11 17:39
2003.04.07
Кто работал с Epson Opos помогите...