Ну вроде написал функции преобразования типа 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;