result:=strleft(result,'.')+strright(result,'.');
while pos('0', result) = 1 do
delete(result, 1, 1);//排除整数前无效的0
while copy(result, length(result), 1) = '0' do
delete(result, length(result), 1);//排除小数后无效的0
end;
var
i,j,t,v,y,len: integer;
temsub,temnum: string;
begin
result := '';
mnumbera:=formatnum(mnumbera);
mnumberb:=formatnum(mnumberb);
v:=vdecimal(mnumbera)-vdecimal(mnumberb);
mnumbera:=formatnum2(mnumbera);
mnumberb:=formatnum2(mnumberb);
if mnumberb='' then
result:='err'
else if mnumbera='' then
result:='0'
else
begin
i:=0;
if length(mnumbera)>length(mnumberb) then
len:=length(mnumberb)
else
len:=length(mnumbera);
if copy(mnumbera,1,len)>=copy(mnumberb,1,len) then
j:=length(mnumberb)
else
j:=length(mnumberb)+1;
for y:=1 to j do
begin
if length(mnumbera)>=y then
temsub:=temsub+mnumbera[y]
else
begin
temsub:=temsub+'0';
v:=v+1;
end;
end;
while i<=n-1 do
begin
if temsub[1]>mnumberb[1] then
t:=strtoint(temsub[1]) div strtoint(mnumberb[1])
else
t:=strtoint(temsub[1]+temsub[2]) div strtoint(mnumberb[1]);
temnum:=infinitemult(mnumberb,inttostr(t));
while (length(temnum)>length(temsub)) or ((length(temnum)=length(temsub))and(temnum>temsub)) do
begin
t:=t-1;
temnum:=infinitemult(mnumberb,inttostr(t));
end;
result:=result+inttostr(t);
i:=i+1;
temsub:=infinitesub(temsub,temnum);
if (temsub='0') and (length(mnumbera)<j) then
begin
v:=v+1;
break;
end;
if temsub='0' then temsub:='';
j:=j+1;
if length(mnumbera)>=j then
begin
temsub:=temsub+mnumbera[j];
end
else
begin
temsub:=temsub+'0';
v:=v+1;
end;
end;
if length(mnumbera)>=j then
v:=v-(length(mnumbera)-j)-1
else
v:=v-1;
while copy(result, length(result), 1) = '0' do
begin
v:=v-1;
delete(result, length(result), 1);
end;
if v>length(result) then
result:='.'+dupestring('0',v-length(result)) + result
else if v>0 then
insert('.', result, length(result) - v +1); //插入小数点
if v<0 then result:=result+dupestring('0',0-v);
if copy(result, 1, 1)='.' then result:='0'+result; //小数前面补0
end;