Subroutine ecvt, fcvt oder gcvt

Zweck

Konvertiert eine Gleitkommazahl in eine Zeichenfolge.

Bibliothek

Standard-C-Bibliothek (libc.a)

Syntax

#include <stdlib.h>
char *ecvt ( Value,  NumberOfDigits,  DecimalPointer,  Sign;)
double Value;
int  NumberOfDigits, *DecimalPointer, *Sign;
char *fcvt (Value, NumberOfDigits, DecimalPointer, Sign;)
double Value;
int  NumberOfDigits, *DecimalPointer, *Sign; 
char *gcvt (Value, NumberOfDigits,  Buffer;)
double Value;
int NumberOfDigits;
char *Buffer;

Beschreibung

Die Subroutinen Ecvt, FCVTund GCVT konvertieren Gleitkommazahlen in Zeichenfolgen.

Die Subroutine Ecvt konvertiert den Parameter Wert in eine auf null endende Zeichenfolge und gibt einen Zeiger darauf zurück. Der Parameter NumberOfDigits gibt die Anzahl der Ziffern in der Zeichenkette an. Die niedrigstwertige Ziffer wird entsprechend dem aktuellen Rundungsmodus gerundet. Die Subroutine ecvt setzt die ganze Zahl, auf die der Parameter DecimalPointer verweist, auf die Position des Dezimalzeichens relativ zum Anfang der Zeichenfolge. (Eine negative Zahl bedeutet, dass der Dezimalpunkt links von den in der Zeichenkette angegebenen Ziffern steht) Das Dezimalzeichen selbst ist nicht in der Zeichenfolge enthalten. Die Subroutine Ecvt setzt auch die ganze Zahl, auf die der Parameter Signieren verweist, auf einen Wert ungleich null, wenn der Parameter Wert negativ ist, und legt andernfalls den Wert 0 fest.

Das Unterprogramm fcvt arbeitet identisch mit dem Unterprogramm ecvt, mit dem Unterschied, dass die korrekte Ziffer für die Ausgabe im C- oder FORTRAN-F-Format auf die durch den Parameter NumberOfDigits angegebene Anzahl von Ziffern gerundet wird.

Hinweis: Im F-Format gibt der Parameter NumberOfDigits die Anzahl der gewünschten Nachkommastellen an. Bei großen Zahlen gibt es eine lange Reihe von Ziffern vor dem Dezimalpunkt und dann NumberOfDigits Ziffern nach dem Dezimalpunkt. Im Allgemeinen sind die Subroutinen GCVT und Ecvt für große Zahlen nützlicher.

Die Subroutine GCVT konvertiert den Parameter Wert in eine auf null endende Zeichenfolge, speichert sie in dem Array, auf das der Parameter Puffer verweist, und gibt dann den Parameter Puffer zurück. Das Unterprogramm gcvt versucht, eine Zeichenkette mit den signifikanten Ziffern des Parameters NumberOfDigits im FORTRAN-F-Format zu erzeugen. Ist dies nicht möglich, wird das E-Format verwendet. Die Subroutine GCVT unterdrückt abschließende Nullen. Die Zeichenfolge ist druckbereit, je nach Bedarf mit Minuszeichen, Dezimalzeichen oder Exponent. Das Radixzeichen wird durch die aktuelle Ländereinstellung bestimmt (siehe Subroutine setlocale ). Wenn die Subroutine setlocale nicht erfolgreich aufgerufen wurde, wird die Standardländereinstellung POSIXverwendet. Die Standardländereinstellung gibt . an. (Punkt) als Radixzeichen. Die Kategorie LC_NUMERISCH bestimmt den Wert des Radixzeichens innerhalb der aktuellen Ländereinstellung.

Die Subroutinen Ecvt, FCVTund GCVT stellen die folgenden Sonderwerte dar, die in den ANSI/IEEE-Standards 754-1985 und 854-1987 für Gleitkommaarithmetik angegeben sind:

Element Beschreibung
Ruhig NaN Gibt eine stille Nichtzahl an (NaNQ).
Signalisierung NaN Zeigt ein NaNS -Signal an.
Unendlich Gibt einen INF-Wert an

Das diesen Werten zugeordnete Vorzeichen wird im Parameter Signieren gespeichert.

Anmerkung: Der Wert 0 kann positiv oder negativ sein. Im IEEE-Gleitkomma haben Nullen auch Vorzeichen und setzen den Parameter Signieren entsprechend.
Achtung: Alle drei Subroutinen speichern die Zeichenfolgen in einem statischen Speicherbereich, dessen Inhalt bei jedem Aufruf einer der Subroutinen überschrieben wird.

Parameter

Element Beschreibung
Wert Gibt einen Gleitkommawert mit doppelter Genauigkeit an.
NumberOfDigits Gibt die Anzahl der Ziffern in der Zeichenfolge an
DecimalPointer Gibt die Position des Dezimalzeichens relativ zum Anfang der Zeichenfolge an.
Unterzeichnen Gibt an, dass das dem Rückgabewert zugeordnete Vorzeichen in den Parameter Signieren eingefügt wird. Da in IEEE-Gleitkommazahlen 0 signiert werden kann, wird der Parameter Signieren für 0 mit Vorzeichen entsprechend gesetzt.
Puffer Gibt einen Zeichenbereich für die Zeichenfolge an.