System.SysUtils.TDoubleHelper

Aus Appmethod Libraries
Wechseln zu: Navigation, Suche

Object Pascal

TDoubleHelper = record helper for Double

C++

typedef void *TDoubleHelper;

Eigenschaften

Typ Sichtbarkeit Quelle Unit Übergeordnet
helper
typedef
public
System.SysUtils.pas
System.SysUtils.hpp
System.SysUtils System.SysUtils

Beschreibung

Stellt die Unterstützung für die Durchführung von Low-Level-Operationen mit Gleitkommawerten mit einfacher Genauigkeit bereit.

Double-Zahlen werden in 64 Bit dargestellt: 1 Bit für Sign, 11 für Exponent und 52 für Fraction. Das Bias ist 1023. Unter Interne Darstellung des Typs Double finden Sie weitere Informationen.

Mit der Methode BuildUp können Sie alle Bits einer TDoubleHelper-Variable mit den in Sign, Mantissa und Exponent angegebenen Werten zuweisen.

Mit den Methoden Exponent, Fraction und Mantissa von TDoubleHelper können Sie auf die einzelnen Teile der Zahl zugreifen.

Hinweis: TDoubleHelper bietet die Unterstützung, die früher TDoubleRec bereitstellte. TDoubleRec ist veraltet; verwenden Sie stattdessen TDoubleHelper.

Beispiel

var
  aNumber: Double;
  
begin
  aNumber := 28;

  Writeln(Format('Number: %f', [aNumber])) ;
  Writeln(Format('Exponent: %d', [aNumber.Exp]));
  Writeln(Format('Fraction: %x', [aNumber.Frac]));
  Writeln(Format('Mantissa: %x', [aNumber.Mantissa]));
end;

Konsolenausgabe:

Number: 28.00
Exponent: 1027
Fraction: C000000000000
Mantissa: 1C000000000000

Die Zahl 28 wird binär als 11100 dargestellt.

Nach der Normalisierung lautet sie 1,1100 * 2^4.

Sign ist 0.

Der Exponent ist 4 und wird mit einfacher Genauigkeit als 1023 (dem Bias) + 4 = 1027 dargestellt. 1027 ist binär 10000000011.

Fraction wird in binärer Form aus den Bits nach dem Dezimalzeichen gebildet, nämlich 1100, d. h., der Wert 1 des führenden Bits wird weggelassen. Fraction wird mit 52 Bit dargestellt, daher wird die 1100-Folge bis zu 52 Stellen mit Nullen aufgefüllt: 11000000000000000000000000000000000000000000000000000 (hexadezimal: $C000000000000).

Die Mantisse (Mantissa) wird aus Fraction mit dem vorangestellten Bit 1 gebildet: 11100000000000000000000000000000000000000000000000000 ($1C000000000000).

Siehe auch

Codebeispiele