Einzelnen Beitrag anzeigen

gammatester

Registriert seit: 6. Dez 2005
999 Beiträge
 
#5

AW: Recordhelper - Was macht TDoubleHelper.Fraction?

  Alt 24. Jul 2018, 16:11
Wie der TE schon bemerkt hat, ist TDoubleHelper.Fraction ein Wert zwischen 1 und 2.
Zitat:
PS: Ich sehe natürlich selbst, daß das Ergebnis laut Sourcecode Result := 1.0 + (F / $0010000000000000);
Frac/Fraction gibt es im Delphi als Integer(Binär) und als Float.
Wie schon gesagt, ich sehe den Quellcode, doch weder den Sinn noch die Bedeutung. Außerdem ist der Werte nicht immer zwischen 1 und 2 wie weiteres Beispiel zeigt: für x := ldexp(double(1), -1030) erhält man als Ausgabe:
Code:
8.69169475979E-0311     3.90625000000000000E-0003
was ja wohl nicht zwischen 1 und 2 ist.

Edit: Ich habe mal gesucht: Die einzige Stelle in der RTL (außer system/sysutils), die das benutzt, ist Math.Frexp
Delphi-Quellcode:
procedure Frexp(const X: Double; var Mantissa: Double; var Exponent: Integer); overload;
...
        Mantissa := X.Fraction / 2;
end;

//Frexp returns the mantissa of X as Mantissa and the exponent as Exponent.
D.h. X.Fraction ist das Doppelte der Mantisse, aber da stellt sich noch einmal mehr die Sinnfrage, zumal TDoubleHelper.Mantissa ja schon noch etwas anderes bedeutet.

Geändert von gammatester (24. Jul 2018 um 16:32 Uhr)
  Mit Zitat antworten Zitat