Einzelnen Beitrag anzeigen

Amateurprofi

Registriert seit: 17. Nov 2005
Ort: Hamburg
1.041 Beiträge
 
Delphi XE2 Professional
 
#16

Re: Killogramm, Gramm und milligram

  Alt 5. Jul 2006, 23: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]='0then 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....
  Mit Zitat antworten Zitat