_ecvt
double 型の数値を文字列に変換します。 この関数のセキュリティが強化されたバージョンについては、「_ecvt_s」を参照してください。
char *_ecvt(
double value,
int count,
int *dec,
int *sign
);
パラメーター
value
変換される数値。count
格納する桁数dec
小数点を格納する位置。sign
変換された数値の符号。
戻り値
_ecvt は、数字の文字列へのポインターを返します。エラーが発生した場合は NULL を返します。
解説
_ecvt 関数は、浮動小数点数を文字列に変換します。 パラメーター value は、変換対象の浮動小数点数です。 この関数は、value を文字列として最大 count 桁まで格納し、末尾に null 文字 ('\0') を追加します。 value の桁数が count を超える場合、下位の桁は丸められます。 count の桁数より少ない場合、文字列に 0 が埋め込まれます。
_ecvt から返される合計桁数は、_CVTBUFSIZE を超えません。
文字列には数字だけが格納されます。 小数点の位置と value の符号は、関数の呼び出し後に dec および sign から取得できます。 dec パラメーターは、小数点が文字列の先頭から何文字目にあるのかを示す整数値を指します。 0 または負の整数値は、小数点が最初の桁の左にあることを示します。 sign パラメーターは、変換された数値の符号を示す整数を指します。 整数値が 0 の場合、数値は正です。 それ以外の場合、数値は負になります。
_ecvt と _fcvt の違いは、count パラメーターの解釈にあります。 _ecvt は、count を出力文字列の合計桁数として解釈しますが、_fcvt は ccount を小数点以下の桁数として解釈します。
_ecvt および _fcvt は、静的に割り当てられた 1 つのバッファーを使用して変換を行います。 これらのルーチンを呼び出すたびに、前の呼び出しの結果は破棄されます。
この関数は、パラメーターを検証します。 dec または sign が NULL の場合、あるいは count が 0 の場合、「パラメーターの検証」に説明されているように、無効なパラメーター ハンドラーが呼び出されます。 実行の継続が許可された場合、errno が EINVAL に設定され、NULL が返されます。
必要条件
機能 |
必須ヘッダー |
---|---|
_ecvt |
<stdlib.h> |
互換性の詳細については、「C ランタイム ライブラリ」の「互換性」を参照してください。
使用例
// crt_ecvt.c
// compile with: /W3
// This program uses _ecvt to convert a
// floating-point number to a character string.
#include <stdlib.h>
#include <stdio.h>
int main( void )
{
int decimal, sign;
char *buffer;
int precision = 10;
double source = 3.1415926535;
buffer = _ecvt( source, precision, &decimal, &sign ); // C4996
// Note: _ecvt is deprecated; consider using _ecvt_s instead
printf( "source: %2.10f buffer: '%s' decimal: %d sign: %d\n",
source, buffer, decimal, sign );
}