次の方法で共有


_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 を返します。 考えられるエラー コードは、ヘッダー ファイル <math.h> で定義されている_UNDERFLOWまたは_OVERFLOWです。

解説

これらの関数は、文字列を浮動小数点値に変換します。 これらの関数と 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

関連項目

データ変換
数値演算と浮動小数点のサポート
ロケール
atof_atof_l_wtof_wtof_l