ecvt, fcvt, gcvt - 浮動小数点数から文字列への変換

【書式】

#include <stdlib.h>

char *ecvt(double val, int prec, int *decpt, int *sign);

char *fcvt(double val, int prec, int *decpt, int *sign);

char *gcvt(double val, int prec, char *buf);

【解説】

ecvt(), fcvt(), gcvt()は、浮動小数点数valを文字列に変換します。

ecvt()はvalをprec桁の文字列に変換します。変換結果がprec 桁をこえる場

合には丸めが実行され、 たりない場合には末尾に'0'を加えてprec桁にしま

す。文字列の終端にはナル文字('\0')を付加します。

変換された文字列は数字だけで構成されており、符号や小数点は含んでいま

せん。valueが0.0または正のときには*signには0をセットし、負のときには

0 でない値をセットします。 *decpt は文字列のどこに小数点があるかを示

し、 文字列の先頭から数えた小数点の位置です。0は文字列の直前を示し、

負の場合は文字列の左側にあることを示します。

fcvt()はprecが小数点以下の桁数を指定すること以外はecvt()と同じです。

gcvt()はvalを文字列に変換し、bufが指している領域へ格納します。buf に

は変換後の文字列を格納するのに十分な大きさを確保しておかなければなり

ません。precで変換の有効桁数を指定します。

gcvt() は printf(3) の %g変換とよく似た動作をします。valの値によって

[-]ddd.ddd形式と[-]d.ddde[+|-]dd形式とを切り換えます。小数部の末尾に

0が続く場合、その0は削除されます。小数部に数字がない場合には小数点は

付加されません。

【リターン値】

ecvt(), fcvt()は内部の文字列バッファの先頭アドレスを返します。

gcvt()はパラメタbufをそのまま返します。

【可搬性】

UNIX, DOS窓

【参照】

atof(3), strtod(3), printf(3)

【バグ】

ecvt()とfcvt()が変換された文字列を格納するバッファは互いに共有してい

る内部の静的領域です。したがってecvt(), fcvt()の呼び出しは以前のバッ

ファの内容を書き換えます。

【copyright (c) 安江正樹@東海大学理学部物理学科】