31.03.2006, 18:28
|
#15
|
AnyKey`щик
Регистрация: 30.03.2006
Сообщений: 11
Написано 0 полезных сообщений (для 0 пользователей)
|
Originally posted by PAX@15.12.2005, 18:06
Ну вроде написал функции преобразования типа Real в тип String и обратно .
Правда работают немного не точно даж не знаю почему... если найдете ошибку, то исправьте пожалуйста.
1. Эта для того чтобы была
Function IntToReal(Val:Integer):Real;
Begin
IntToReal:=Val;
End;
2. X в положительной целочисленной степени
Function XStepY(X:Real;Y:Integer):Real;
var i:integer;
s:Real;
Begin
s:=1;
If Y>0 then
for i:=1 to Y do s:=s*x
else
If Y=0 then
S:=1
else
for i:=-1 downto Y do S:=S/X;
XStepY:=S;
End;
3. X в целочисленной степени
Function XStepY(X:Real;Y:Integer):Real;
var i,s:integer;
Begin
s:=1;
If Y>0 then
for i:=1 to Y do s:=s*x
else
If Y=0 then
s:=1
else
for i:=-1 downto Y do s:=s/x;;
XStepY:=s;
End;
4. Вещественное число в строку
Function RealToString(Val:Real):String;
Var I,N:Integer;
A,B:real;
S,Sgn:string;
Begin
S:='';
If Val>0 then
Sgn:=''
else
Begin
Sgn:='-';
Val:=-Val;
End;
A := Val-Frac(Val);
B := Val-A;
S:=Sgn + IntegerToString(Trunc(A))+ '.';
For I:=1 to 5 do
Begin
A:=B*XStepPY(10,I);
A:=A-Frac(A);
S:=S+IntegerToString(Trunc(A));
A:=A/XStepPY(10,I);
B:=B-A;
end;
RealToString:=S;
end;
5. Строку в вещественное число
Function String2Real(Val:String):Real;
Var P,i,Sgn,C:Integer;
A,B:real;
S,S1:string;
Begin
A:=0;B:=0; C:=0;
S:=Repl(Val,',','.');
P:=Pos(S,'.');
if (GetChar(S,0)<>'-') then Sgn:=1 else Begin Sgn:=-1; C:=1; end;
If P>=0 Then
Begin
S1:=Copy(S,C,P);
for i:=Length(S1) downto 0 do
A:=A+StringToInteger(GetChar(S1,I))*IntToReal(XStepPY(10,Length(S1)-I-1));
S1:=Copy(S,P+1,Length(S));
for i:=0 to Length(S1) do
B:=B+StringToInteger(GetChar(S1,I))/IntToReal(XStepPY(10,I+1));
String2Real:=(A+B)*Sgn;
End
else
Begin
S1:=Copy(S,C,Length(S));
for i:=Length(S1) downto 0 do
A:=A+StringToInteger(GetChar(S1,I))*IntToReal(XStepPY(10,Length(S1)-I-1));
String2Real:=A*Sgn;
End;
end;
|
Функция преобразования из real в string не работает, нужна функция B*XStepPY.
Дадите?)
|
(Offline)
|
|