_atodbl
, _atodbl_l
, _atoldbl
, _atoldbl_l
, _atoflt
, _atoflt_l
文字列を double (_atodbl
)、long double (_atoldbl
)、または float (_atoflt
) に変換します。
構文
int _atodbl( _CRT_DOUBLE * value, char * str );
int _atodbl_l ( _CRT_DOUBLE * value, char * str, _locale_t locale );
int _atoldbl( _LDOUBLE * value, char * str );
int _atoldbl_l ( _LDOUBLE * value, char * str, _locale_t locale );
int _atoflt( _CRT_FLOAT * value, const char * str );
int _atoflt_l( _CRT_FLOAT * value, const char * str, _locale_t locale );
パラメーター
value
文字列を浮動小数点値に変換することで生成される double 型、long double 型、または float 型の値。 これらの値は構造体でラップされます。
str
浮動小数点値に変換するために解析する文字列。
locale
使用するロケール。
戻り値
処理が正常に終了した場合は 0 を返します。 考えられるエラー コードは、_UNDERFLOW
_OVERFLOW
ヘッダー ファイル <math.h> で定義されているか、または定義されています。
解説
これらの関数は、文字列を浮動小数点値に変換します。 これらの関数と atof
関数ファミリの違いは、これらの関数が浮動小数点コードを生成せず、ハードウェア例外を引き起こさないということです。 代わりに、エラー状態がエラー コードとして報告されます。
文字列に浮動小数点値として有効な解釈がない場合は、 value
0 に設定され、戻り値は 0 になります。
サフィックスを持つ _l
これらの関数のバージョンは、サフィックスを持たないバージョンと同じですが、現在のスレッド ロケールの代わりに渡されるパラメーターを使用 locale
する点が異なります。
既定では、この関数のグローバル状態の適用対象は、アプリケーションになります。 この動作を変更するには、「CRT のグローバル状態」を参照してください。
必要条件
ルーチン | 必須ヘッダー |
---|---|
_atodbl , _atoldbl , _atoflt _atodbl_l , _atoldbl_l , _atoflt_l |
<stdlib.h> |
例
// crt_atodbl.c
// Uses _atodbl to convert a string to a double precision
// floating point value.
#include <stdlib.h>
#include <stdio.h>
int main()
{
char str1[256] = "3.141592654";
char abc[256] = "abc";
char oflow[256] = "1.0E+5000";
_CRT_DOUBLE dblval;
_CRT_FLOAT fltval;
int retval;
retval = _atodbl(&dblval, str1);
printf("Double value: %lf\n", dblval.x);
printf("Return value: %d\n\n", retval);
retval = _atoflt(&fltval, str1);
printf("Float value: %f\n", fltval.f);
printf("Return value: %d\n\n", retval);
// A non-floating point value: returns 0.
retval = _atoflt(&fltval, abc);
printf("Float value: %f\n", fltval.f);
printf("Return value: %d\n\n", retval);
// Overflow.
retval = _atoflt(&fltval, oflow);
printf("Float value: %f\n", fltval.f);
printf("Return value: %d\n\n", retval);
return 0;
}
Double value: 3.141593
Return value: 0
Float value: 3.141593
Return value: 0
Float value: 0.000000
Return value: 0
Float value: inf
Return value: 3
関連項目
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示