System.SysUtils.TDoubleHelper

De Appmethod Libraries
Aller à : navigation, rechercher

Object Pascal

TDoubleHelper = record helper for Double

C++

typedef void *TDoubleHelper;

Propriétés

Type Visibilité  Source Unité  Parent
helper
typedef
public
System.SysUtils.pas
System.SysUtils.hpp
System.SysUtils System.SysUtils


Description

Fournit la prise en charge pour l'exécution des opérations de bas niveau sur les valeurs à virgule flottante en simple précision.

Les nombres de type Double sont représentés sur 64 bits : 1 bit pour le signe, 11 pour l'exposant et 52 pour la fraction. Le biais est de 1023. Voir Représentation interne du type Double pour plus d'informations.

Pour assigner tous les bits d'une variable TDoubleHelper aux valeurs données par Sign, Mantissa et Exponent, utilisez la méthode BuildUp.

Les méthodes Exponent, Fraction et Mantissa de TDoubleHelper fournissent l'accès aux parties brutes du nombre.

Remarque : TDoubleHelper offre le support que TDoubleRec offrait précédemment. TDoubleRec est obsolète ; utilisez TDoubleHelper à la place.

Exemple

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;

Sortie console :

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

Le nombre 28 est représenté en binaire par 11100. Après la normalisation, c'est 1.1100 * 2^4.

Le signe a la valeur 0.

L'exposant vaut 4, représenté en précision simple en tant que 1023 (le biais) + 4 = 1027. 1027 est représenté par 10000000011 en binaire.

La fraction est formée à partir des bits après le séparateur décimal en format binaire, à savoir 1100, c'est-à-dire que la valeur de 1 du bit de début est omise. La fraction est représentée sur 52 bits, nous complétons ainsi la séquence 1100 jusqu'à 52 chiffres avec des zéros : 11000000000000000000000000000000000000000000000000000 (en hexadécimal, $C000000000000).

La mantisse est formée à partir de la fraction avec 1 bit avant : 11100000000000000000000000000000000000000000000000000 ($1C000000000000).

Voir aussi

Exemples de code