Sprung zum Seitenende Struktur Themen A...Z Titel << >>

CXI-Basis-Programmierreferenz / Version 2 / Datenspeicherung / CxiNode / Fließkommavariablen /

SetFlt - Fließkommavariable setzen

[C++] CxiError CxiNode :: SetFlt (CxiName pname, double pval)
[C++] CxiError cxiSetFlt ...P (CxiHandle self, CxiName pname, double pval)

[S2:STANDARD] [Portabilitätswarnung] Setzt eine Fließkommavariable

pname:
Name der Variablen oder Pfadangabe und Variablenname

pval:
Wert der Variablen

return:
0 ok, sonst Fehler

Fließkommavariablen entsprechen dem Datentyp double in C/C++, der maximale Wert ist circa 1.79e308 (genau 2 hoch 1024 minus 2 hoch 971), die Genauigkeit liegt bei 15 Dezimalstellen (53 Dualstellen). Dieses Format wird u.a. von den INTEL-Prozessoren verwendet, es kann beliebig zwischen DOS, Win16, Win32 und OS/2 ausgetauscht werden.

Die Speicherung von Fließkommavariablen erfolgt bei allen momentan implementierten CXI-Varianten in der 64 Bit breiten IEEE-Darstellung: 1 Bit Vorzeichen, 11 Bit Exponent mit BIAS, 53 Bit Mantisse.

[IEEE-64-Bit-Format]

Von der Mantisse werden nur 52 Bit gespeichert, da das Vorkommabit bei normalisierten Zahlen immer 1 und bei denormalisierter Darstellung immer 0 ist. Denormalisierte Zahlen, Unendlichkeiten, -0.0 und NaN's (Not a Number) werden von SetFlt nicht abgefangen, diese Sonderfälle sind jedoch nur eingeschränkt portabel, auch zwischen den verschiedenen Generationen der INTEL-(Co-)Prozessoren existieren hier Unterschiede. Der einzige nicht normalisierte, aber uneingeschränkt portable Wert ist Null (+0.0).

[!] Achtung: Darstellung, Genauigkeit und Wertebereich von Fließkommazahlen sind maschinenabhängig; daher können sie NICHT konvertiert werden, wenn sie auf Rechner übertragen werden, die nicht nach dem IEEE-Standard arbeiten; lediglich die Bytereihenfolge (Little Endian - Big Endian) wird an die jeweilige Maschine angepasst. Sollen Fließkommawerte systemunabhängig übermittelt werden, ist es ratsam, sie in Form einer Zeichenkette in der gewünschten Genauigkeit abzulegen.

Da Fließkommaarithmetik (die Verwendung des Datentyps double) einen enormen Overhead in Anwendungsprogrammen bedeuten kann, stellt CXI die Funktionen SetFlt und GetFlt nur dann zur Verfügung, wenn alle folgenden Bedingungen erfüllt sind:

- 1. Vor der Einbindung von CXIB.H wird die Unterstützung von Fließkommazahlen mit der Anweisung
#define CXIFLOAT
explizit angefordert.

- 2. Die Datei wird mit C++ compiliert (auch für die der C-Schnittstelle nachempfundenen Funktionen cxiGetFlt und cxiSetFlt ist ein C++-Compiler erforderlich).

- 3. Es ist ein numerischer Coprozessor oder ein Emulator vorhanden (Bei entsprechender Compiler-Option wird automatisch ein Emulator in das Programm eingebunden). INTEL-Prozessoren vom Typ 486 oder höher besitzen einen integrierten Coprozessor.

- 4. Sie verwenden CXI 2.07 oder höher.

Außerdem sollten Sie Fließkommavariablen nur verwenden, wenn Sie nicht beabsichtigen, hiermit erstellte Dateien von früheren Versionen als 2.07 verarbeiten zu lassen.

Hinweis: Diese Bedingungen gelten nur für die Funktionen SetFlt und GetFlt, die auf den Datentyp double angewiesen sind. Auf existierende Fließkommavariablen können auch ohne diese Einschränkungen alle typunabhängigen Funktionen angewandt werden, sie können z.B. gelöscht, kopiert oder umbenannt werden. Das Auslesen des ganzzahligen Anteils mit GetAsNum ist ebenfalls ohne Einschränkungen möglich.

Wichtig: Die genannten Bedingungen sind für alle momentan von CXI unterstützten Systeme gültig. Inwieweit diese oder andere Einschränkungen für zukünftige CXI-Versionen auf Nicht-INTEL-Plattformen gelten, ist nicht abzusehen.

Portabilität:
Diese Funktion ist in allen unterstützten Systemen verfügbar. Fließkommavariablen werden erst ab Version 2.07 des CXI-Basissystems unterstützt und können von früheren Versionen nicht verarbeitet werden.

Siehe auch:
GetFlt


[i] CXI-Basis-Programmierreferenz
Version 2.10 72 (1014-001), erstellt am 15. April 2000
Textseite 185 von 855, Thema 8234 (SetFlt)
[c] Copyright (c) 1996-2000 by TeraConnect GmbH

Sprung zum Seitenanfang Struktur Themen A...Z Titel << >>