次の方法で共有


_atodbl、_atodbl_l、_atoldbl、_atoldbl_l、_atoflt _atoflt_l

更新 : 2007 年 11 月

文字列を 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,
   char * str
);
int _atoflt_l(
   _CRT_FLOAT * value,
   char * str,
   locale_t locale
);

パラメータ

  • value
    文字列を浮動小数点値に変換することによって生成される double、long double、または float 値。これらの値は構造体にラップされます。

  • str
    解析して浮動小数点値に変換する文字列。

  • locale
    使用するロケール。

戻り値

正常に終了した場合は 0 を返し、可能性のあるエラー コードは Math.h ヘッダー ファイルに定義されている _UNDERFLOW または _OVERFLOW です。

解説

これらの関数は、文字列を浮動小数点値に変換します。これらの関数は、浮動小数点コードを生成しないためハードウェア例外が発生しないという点が atof 系の関数と異なります。代わりに、エラー コードとしてエラー条件がレポートされます。

文字列に有効な浮動小数点値が含まれない場合、value は 0 に設定され、戻り値は 0 になります。

これらの関数のうち _l サフィックスが付けられたバージョンは、現在のスレッド ロケールの代わりに渡されたロケール パラメータを使用する点を除いて同じです。

必要条件

ルーチン

必須ヘッダー

_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: 1.#INF00
Return value: 3

参照

参照

データ変換

浮動小数点サポート

ロケール

atof、_atof_l、_wtof、_wtof_l