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.