System.SysUtils.TDoubleHelper
Delphi
TDoubleHelper = record helper for Double
C++
/*Helper*/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 Formats de données internes (Delphi) 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
- System.Double
- System.SysUtils.TSingleHelper
- System.SysUtils.TExtendedHelper
- System.SysUtils.TDoubleHelper.Sign
- System.SysUtils.TDoubleHelper.Frac
- System.SysUtils.TDoubleHelper.Exp
- System.SysUtils.TDoubleHelper.BuildUp
- System.SysUtils.TDoubleHelper.Exponent
- System.SysUtils.TDoubleHelper.Fraction
- System.SysUtils.TDoubleHelper.Mantissa
- System.TDoubleRec