Registriert seit: 17. Nov 2005
Ort: Hamburg
1.077 Beiträge
Delphi XE2 Professional
|
Re: Killogramm, Gramm und milligram
6. Jul 2006, 00:37
Hallo, TheCatcher,
Ich hatte das mal so gelöst
Ursprünglich wurden 3 signifikante Ziffern ausgegeben.
So wie es jetzt ist, bis zu 18 signikanten Ziffern nach dem Dezimalpunkt. Hab ich aber nicht ausgiebig getestet.
Delphi-Quellcode:
FUNCTION Normalize(v:extended; baseunit: string): string;
type
TNumberUnit=(nuYocto,nuZepto,nuAtta,nuFemto,nuPiko,nuNano,nuMicro,nuMilli,
nuNone,nuKilo,nuMega,nuGiga,nuTera,nuPeta,nuExa,nuZetta,nuYotta);
const
numberunits: Array[TNumberUnit] of char=' yzafpn'#181' m kMGTPEZY';
var
i,d:integer; nu:TNumberUnit;
begin
nu:=nuNone;
if v<>0 then begin
while v<1 do begin
v:=v*1000;
nu:=Pred(nu);
end;
while v>=1000 do begin
v:=v/1000;
nu:=Succ(nu);
end;
// Einstellung auf 3 signifikante Ziffern
// if (nu=nuNone) or (v>99.95 {>=100}) then d:=0
// else if v>9.95 {>=10} then d:=1
// else d:=2;
end;
// str(v:0:d,result);
d:=18;
str(v:0:d,result);
for i:=Length(result) downto 1 do
if result[i]=' 0' then dec(d) else break;
str(v:0:d,result);
if nu=nuNone then result:=result+' '+baseunit
else result:=result+' '+numberunits[nu]+baseunit;
end;
Gruß, Klaus
Die Titanic wurde von Profis gebaut,
die Arche Noah von einem Amateur.
... Und dieser Beitrag vom Amateurprofi....
|
|
Zitat
|