_atodbl、_atodbl_l、_atoldbl、_atoldbl_l、_atoflt、_atoflt_l_atodbl, _atodbl_l, _atoldbl, _atoldbl_l, _atoflt, _atoflt_l

文字列を double (_atodbl)、long double (_atoldbl)、または float (_atoflt) に変換します。Converts a string to a double (_atodbl), long double (_atoldbl), or float (_atoflt).

構文Syntax

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 );

パラメーターParameters

valuevalue
文字列を浮動小数点値に変換することで生成される double 型、long double 型、または float 型の値。The double, long double, or float value that's produced by converting the string to a floating-point value. これらの値は構造体でラップされます。These values are wrapped in a structure.

引数str
浮動小数点値に変換するために解析する文字列。The string to be parsed to convert into a floating-point value.

localelocale
使用するロケール。The locale to use.

戻り値Return Value

処理が正常に終了した場合は 0 を返します。Returns 0 if successful. 考えられるエラーコードは、 _UNDERFLOWまたは _OVERFLOWであり、ヘッダー <ファイルの math. h> で定義されています。Possible error codes are _UNDERFLOW or _OVERFLOW, which are defined in the header file <math.h>.

解説Remarks

これらの関数は、文字列を浮動小数点値に変換します。These functions convert a string to a floating-point value. これらの関数とatofファミリの関数の違いは、これらの関数は浮動小数点コードを生成せず、ハードウェア例外を発生させないことです。The difference between these functions and the atof family of functions is that these functions do not generate floating-point code and do not cause hardware exceptions. 代わりに、エラー状態がエラー コードとして報告されます。Instead, error conditions are reported as error codes.

文字列に浮動小数点値として有効な解釈がない場合、は0に設定され、戻り値は0になります。If a string does not have a valid interpretation as a floating-point value, value is set to zero and the return value is zero.

_Lサフィックスを持つこれらの関数のバージョンは、現在のスレッドロケールの代わりに渡されたロケールパラメーターを使用する点を除いて、サフィックスが付いていないバージョンと同じです。The versions of these functions that have the _l suffix are identical the versions that don't have the suffix, except that they use the locale parameter that's passed in instead of the current thread locale.

既定では、この関数のグローバル状態はアプリケーションにスコープが設定されています。By default, this function's global state is scoped to the application. これを変更するには、「 CRT でのグローバル状態」を参照してください。To change this, see Global state in the CRT.

必要条件Requirements

ルーチンRoutines 必須ヘッダーRequired header
_atodbl_atoldbl_atoflt_atodbl, _atoldbl, _atoflt

_atodbl_l_atoldbl_l_atoflt_l_atodbl_l, _atoldbl_l, _atoflt_l
<stdlib.h><stdlib.h>

Example

// 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

関連項目See also

データ変換Data Conversion
浮動小数点サポートFloating-Point Support
Locale
atof、_atof_l、_wtof、_wtof_latof, _atof_l, _wtof, _wtof_l