ich hab mir eine physik
unit geschrieben die eben auch in 10er potenzen umrechnen soll
ich hab mal die negativen 10er potenzen zeurst gemacht
Delphi-Quellcode:
function TPhysic.Potenz10(z: real; nr : Integer): String;
var help, hs : String;
i,e,s,stellen : Integer;
b : boolean;
begin
{ aufbau zB 0.000021 ergebnis : 2.1*10^-5
nr = genauigkeit}
help := floatToStr(z);
s := 3;
if nr > Length(help)-1 then nr := nr - Length(help)-1;
hs := '';
stellen := 0;
b := false;
if (help[1] = '0') and (help[2] = ',') then
begin
for i:= 3 to length(help)-1 do
begin s := s + 1;
if b = false then
if help[i] <> '0' then
begin
b := true;
hs := help[i] + ',';
for e := s to length(help)-1 do
hs := hs + help[e];
end
else
inc(stellen);
delete(hs,2+nr,length(hs)-(2+nr));
result := hs + '*10^-' + IntToStr(Stellen+1)
end;
end
else
begin
end;
end;
nr stellt eben die genauigkeit ein und genau da ist mein problem
aufruf :
Edit1.Text := p.Potenz10(StrToFloat(Edit1.text),2);
lösungen von zwei eingaben :
0,05634
5,63*10^-2 <-- das stimmt
0,000345
3,4*10^-4 <-- das stimmt nicht
jemand eine ahnung wos happert(ist unsauber geschrieben bitte verzeiht)
grüße Nico