共用方式為


_atodbl、_atodbl_l、_atoldbl、_atoldbl_l、_atoflt _atoflt_l

將字串轉換為雙精度浮點數 (_atodbl)、長雙精度浮點數 (_atoldbl),或浮點數 (_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
    透過由字串轉換成浮點值而產生的雙精度、長雙精度或浮點數值。 這些值封裝在一個結構中。

  • str
    要剖析轉換為浮點值的字串。

  • locale
    使用的地區設定。

傳回值

如果成功則傳回 0。 可能的錯誤碼是 _UNDERFLOW 或 _OVERFLOW,定義於標頭檔 Math.h 中。

備註

這些函式將字串轉換成浮點值。 這些函式和和函式的 atof 系列的差異是這些函式不產生浮點程式碼,且不會產生硬體例外狀況。 相反地,錯誤狀況報告為錯誤碼。

如果字串沒有有效的解譯如浮點值, value 會設定為零,且傳回值為零。

有 _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;
}
  

請參閱

參考

資料轉換

浮點支援

地區設定

atof、_atof_l、_wtof、_wtof_l