Einzelnen Beitrag anzeigen

marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#11

Re: Großer Hex-String in Dezimal String wandeln, rundungsfeh

  Alt 2. Jul 2007, 15:03
Hallo ruedi,

ich vermute, dass eine Umprogrammierung des FPU Control Word Schuld am Verlust der Genauigkeit ist. Ich habe das jetzt nicht nachzustellen versucht, aber ich könnte dir eine unempfindliche Lösung anbieten:

Delphi-Quellcode:
uses
  FmtBcd;

function HexToDec(const s: string): string;
var
  total, nibble: TBcd;
  i: Integer;
begin
  total := IntegerToBcd(0);
  for i := 1 to Length(s) do
  begin
    nibble := IntegerToBcd(StrToInt('$' + s[i]));
    BcdMultiply(total, 16, total);
    BcdAdd(total, nibble, total);
    ShowMessage(BcdToStr(total));
  end;
  Result := BcdToStr(total);
end;
Das soll nur das Prinzip zeigen. Optimierungen sind möglich, aber eventuell unnötig.

Freundliche Grüße
  Mit Zitat antworten Zitat