Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.167 Beiträge
 
Delphi 12 Athens
 
#7

Re: Exponent aus Extended extrahieren?

  Alt 2. Mai 2009, 11:17
Du weißt aber, daß du so über 'nen Extended gehst/rechnest und damit unter Umständen die letze (9.) Kommastelle einbüßt.

In welchem Bereich liegen denn deine Werte?

Wenn die im Bereich -9,223372036854775808 .. 9,223372036854775807 liegen, dann könnte man einfach:
Delphi-Quellcode:
class operator FIXCOMMA64.Multiply(const Left, Right: FIXCOMMA64): FIXCOMMA64;
var val: extended;
begin
  Result.FBCD9 := (Left.FBCD9 * Right.FBCD9 + (FBCD9INT div 2)) div FBCD9INT;
end;
.FBCD9 ist och ein Int64?

Bei größerem Wertebereich müßte am den Überlauf abfangen, also sozusagen die Multiplikation mit 128 Bit-Integern berechnen, bzw. die Berechnung auf 2 64-Bit oder besser noch auf 4 (vier) 3 32-Bit-Integer (für 32-Bit-CPUs) zerlegen.

praktisch so, wie es Delphi schon beim Int64 macht ... nur größer
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat