名称
ecvt(), fcvt(), gcvt() ― 浮動小数点数値から文字列への変換
構文
#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);
廃止インタフェース
int ecvt_r(
double value,
int ndigit,
int *decpt,
int *sign,
char *buffer,
int buflen);
int fcvt_r(
double value,
int ndigit,
int *decpt,
int *sign,
char *buffer,
int buflen);
説明
| ecvt() | | value を ndigit 桁の null で終わる文字列に変換し、その文字列を指すポインターを返します。
最上位桁は数値が 0 でない限り 0 以外の数字です。 最下位桁は丸められます。
文字列の先頭からの小数点キャラクタの相対位置は、 decpt を通して間接的に格納されます (負の値は返される数字の左側を意味します)。
小数点キャラクタは返される文字列の中にはありません。 結果が負の場合、 sign で示されるワードは 0 以外の値に、そのほかの場合には 0 になります。 変換された値が範囲外の場合、数字以外の文字からなる文字列 3 種類のうちの 1 つが返されます。
値が指数部に収まらないほど大きい場合、値が負であれば --、
正であれば ++ が返されます。 3 番目の文字列は、0 除算など数値が不正の場合に返されます。
結果の値は非数 (NAN) で、 文字 ? を返します。 |
| fcvt() | | ecvt() と同じですが、 ndigit で指定した桁数を、printf %f (FORTRAN
F-format) の出力に合うように正しい桁数で丸められます。 |
| gcvt() | | value を null で終わる文字列に変換し、 buf の指す配列に格納し、 buf を返します。 ndigit 桁が意味をもつように、可能なら FORTRAN F-format の結果を生じます。そうでなければ
E-format になります。 - 符号および小数点キャラクタは、必要であれば返される文字列に含まれます。
先頭の 0 は省略されます。 小数点キャラクタは現在ロードされている
NLS 環境 setlocale(3C) 参照)
によって決められます。 setlocale() が失敗した場合、デフォルトの
NLS 環境である "C" が使用されます lang(5) 参照)。
デフォルトの環境では小数点キャラクタにピリオド (.)
が指定されています。 |
廃止インタフェース
ecvt_r() および fcvt_r() は、浮動小数点の数値を文字列に変換します。
多言語化対応
ロケール
LC_NUMERIC の種類により、現在の NLS 環境の中から小数点キャラクタを決めます。
警告
ecvt() と fcvt() が返す値は配列を指しています。配列の内容は、次に同じスレッドで当該インタフェースを呼び出すと上書きされます。
ecvt_r() および fcvt_r() インタフェースは廃止される予定です。現在では既存の DCE
アプリケーションとの互換性を保つためにだけサポートされています。新しいマルチスレッドアプリケーションでは、 ecvt() と fcvt() を使用してください。
著者
ecvt() および fcvt() は
AT&T で開発されました。 gcvt() は AT&T
および HP で開発されました。
参照
setlocale(3C), printf(3S), lang(5), thread_safety(5)
標準準拠
ecvt(): XPG2
fcvt(): XPG2
gcvt(): XPG2