Your Browser is not longer supported

Please use Google Chrome, Mozilla Firefox or Microsoft Edge to view the page correctly
Loading...

{{viewport.spaceProperty.prod}}

ecvt, fcvt, gcvt - Gleitpunktzahl in Zeichenkette umwandeln

&pagelevel(4)&pagelevel

Definition

#include <stdlib.h>

char *ecvt(double value, int ndigit, int *decpt, int *sign);

char *fcvt (double value, int ndigit, int *decpt, int *sign);

char *gcvt (double value, int ndigit, char *buf);

Beschreibung

ecvt() wandelt einen Gleitpunktwert value in eine Zeichenkette aus ndigit EBCDIC-Ziffern um und liefert als Ergebnis einen Zeiger auf diese Zeichenkette. Das Ausgabeformat entspricht dem %f-Format von printf().

Die Zeichenkette beginnt mit der ersten Ziffer ungleich 0 aus dem umzuwandelnden Gleitpunktwert, d.h. führende Nullen werden nicht übernommen.

Dezimalzeichen und ein ggf. negatives Vorzeichen sind nicht Bestandteil der Zeichenkette. ecvt() liefert jedoch die Position des Dezimalzeichens und das Vorzeichen in Ergebnisparametern zurück.

value ist ein Gleitpunktwert, der für die Ausgabe aufbereitet werden soll.

ndigit ist die Anzahl der Ziffern in der Ergebniszeichenkette (gerechnet ab der ersten Ziffer ungleich 0 aus dem umzuwandelnden Gleitpunktwert). Ist ndigit kleiner als die Ziffernzahl von value, wird die niedrigste Stelle gerundet. Ist ndigit größer, wird rechtsbündig mit Nullen aufgefüllt. Die Genauigkeit der umgewandelten Zahl wird begrenzt durch die maximale Anzahl signifikanter Ziffern, die im Typ double darstellbar sind.

decpt ist der Zeiger auf eine ganze Zahl, die die Position des Dezimalzeichens in der Ergebniszeichenkette angibt. Wenn *decpt eine positive Zahl ist, wird die Position des Dezimalzeichens relativ zum Beginn der Ergebniszeichenkette angegeben. Wenn *decpt eine negative Zahl bzw. 0 ist, steht das Dezimalzeichen links vor der ersten Ziffer. Kann der ganzzahlige Anteil von value nicht vollständig mit ndigit Ziffern dargestellt werden, ist *decpt größer als ndigit.

sign ist der Zeiger auf eine ganze Zahl, die das Vorzeichen der Ergebniszeichenkette angibt. Wenn *sign gleich 0 ist, ist das Vorzeichen positiv. Wenn *sign ungleich 0 ist, ist das Vorzeichen negativ.

fcvt() ist identisch zu ecvt(), außer dass mit ndigit die Anzahl der Ziffern nach dem Dezimalzeichen angegeben wird.

Ist ndigit kleiner als die Ziffernzahl von value nach dem Dezimalzeichen, wird die niedrigste Stelle gerundet. Ist ndigit größer, wird rechtsbündig mit Nullen aufgefüllt.

gcvt() wandelt einen Gleitpunktwert value in eine Zeichenkette aus EBCDIC-Ziffern entsprechend dem %g-Format von printf() um und schreibt die aufbereitete Zeichenkette in einen Vektor, auf den buf zeigt. Als Ergebnis wird ein Zeiger auf diesen Bereich geliefert. Es werden ndigit signifikante Ziffern erzeugt (obere Grenze für ndigit ist die Anzahl signifikanter Stellen, die der Genauigkeit des Typs double entspricht). Ist ndigit kleiner als die Ziffernzahl von value, wird die niedrigste Stelle gerundet. Ist ndigit größer, endet die Zeichenkette mit der letzten Ziffer ungleich 0. Falls value eine ganze Zahl darstellt, wird buf rechtsbündig mit Nullen aufgefüllt.

Außerdem enthält die Zeichenkette das Minuszeichen, falls der Wert < 0 ist, und das Dezimalzeichen, falls value keine ganze Zahl ist. Das verwendete Dezimalzeichen ergibt sich aus der aktuellen Lokalität und wird dort durch die Kategorie LC_NUMERIC bestimmt. Wenn durch setlocale() nicht explizit die Lokalität geändert wurde, gilt der Standardwert „POSIX“. In der POSIX-Lokalität ist das Dezimalzeichen ein Punkt (.).

Je nach Aufbau des umzuwandelnden Gleitpunktwertes entspricht das Ausgabeformat

  • dem %f-Format von printf().
  • oder dem %e-Format von printf() (Exponential-Schreibweise / wissenschaftliche Notation).

ndigit ist die Anzahl der Ziffern in der Ergebniszeichenkette (gerechnet ab der ersten Ziffer ungleich 0 aus dem umzuwandelnden Gleitpunktwert).

*buf ist der Zeiger auf die umgewandelte Zeichenkette.
Der Speicherbereich, auf den buf zeigt, sollte mindestens (ndigit + 4) Bytes groß sein!

ecvt(), fcvt() und gcvt() sind nicht threadsicher.

Returnwert

ecvt(), fcvt():

Zeiger auf die umgewandelte EBCDIC-Zeichenkette

 


bei Erfolg. Die Zeichenkette wird mit dem Nullbyte (\0) abgeschlossen.

 

gcvt():

 

*buf

bei Erfolg. Die Zeichenkette wird mit dem Nullbyte (\0) abgeschlossen.

Hinweise

Falsche Parameter, etwa ein integer- statt double-Wert, führen zum Programmabbruch.

Portable Anwendungen sollten statt ecvt(), fcvt() und gcvt() die Funktion sprintf() verwenden.

ecvt() und fcvt(): Das Ergebnis wird in einem C-internen Datenbereich abgelegt, der bei jedem nachfolgenden Aufruf einer dieser Funktionen überschrieben wird.

Siehe auch

printf(), setlocale(), sprintf(), stdlib.h.