Share via


atof, _atof_l, _wtof, _wtof_l

Mengonversi string menjadi ganda.

Sintaks

double atof(
   const char *str
);
double _atof_l(
   const char *str,
   _locale_t locale
);
double _wtof(
   const wchar_t *str
);
double _wtof_l(
   const wchar_t *str,
   _locale_t locale
);

Parameter

str
String yang akan dikonversi.

locale
Lokal untuk digunakan.

Nilai hasil

Setiap fungsi mengembalikan nilai yang double dihasilkan dengan menginterpretasikan karakter input sebagai angka. Nilai yang dikembalikan adalah 0,0 jika input tidak dapat dikonversi ke nilai jenis tersebut.

Dalam semua kasus di luar rentang, errno diatur ke ERANGE. Jika parameter yang diteruskan adalah NULL, handler parameter yang tidak valid dipanggil, seperti yang dijelaskan dalam Validasi parameter. Jika eksekusi diizinkan untuk melanjutkan, fungsi-fungsi ini diatur errno ke EINVAL dan mengembalikan 0.

Keterangan

Fungsi-fungsi ini mengonversi string karakter menjadi nilai floating-point presisi ganda.

String input adalah urutan karakter yang dapat ditafsirkan sebagai nilai numerik dari jenis yang ditentukan. Fungsi berhenti membaca string input pada karakter pertama yang tidak dapat dikenali sebagai bagian dari angka. Karakter ini mungkin karakter null ('\0' atau L'\0') yang mengakhiri string.

Argumen str ke atof dan _wtof memiliki formulir berikut:

[whitespace] [sign] [digits] [.digits] [ {e | E }[sign]digits]

whitespace Terdiri dari spasi atau karakter tab, yang diabaikan; sign adalah plus (+) atau minus (-); dan digits adalah satu atau beberapa digit desimal. Jika tidak ada digit yang muncul sebelum titik desimal, setidaknya satu harus muncul setelah titik desimal. Digit desimal dapat diikuti oleh eksponen, yang terdiri dari huruf pengantar (e, atau E) dan bilangan bulat desimal yang ditandatangani secara opsional.

Versi UCRT dari fungsi-fungsi ini tidak mendukung konversi huruf eksponen gaya Fortran (d atau D) . Ekstensi non-standar ini didukung oleh versi CRT yang lebih lama, dan mungkin merupakan perubahan yang melanggar untuk kode Anda.

Versi fungsi-fungsi ini dengan _l akhiran identik kecuali mereka menggunakan locale parameter yang diteruskan alih-alih lokal saat ini.

Secara default, status global fungsi ini dicakup ke aplikasi. Untuk mengubah perilaku ini, lihat Status global di CRT.

Pemetaan rutin teks generik

TCHAR.H Rutin _UNICODE dan _MBCS tidak ditentukan _MBCS Didefinisikan _UNICODE Didefinisikan
_tstof atof atof _wtof
_ttof atof atof _wtof

Persyaratan

Rutinitas Header yang diperlukan
atof, _atof_l C: <math.h> atau <stdlib.h> C++: <cstdlib>, <stdlib.h>, <cmath> atau <math.h>
_wtof, _wtof_l C: <stdlib.h> atau <wchar.h> C++: <cstdlib>, <stdlib.h> atau <wchar.h>

Contoh

Program ini menunjukkan bagaimana angka yang disimpan sebagai string dapat dikonversi ke nilai numerik menggunakan atof fungsi dan _atof_l .

// crt_atof.c
//
// This program shows how numbers stored as
// strings can be converted to numeric
// values using the atof and _atof_l functions.

#include <stdlib.h>
#include <stdio.h>
#include <locale.h>

int main(void)
{
    char    *str = NULL;
    double value = 0;
    _locale_t fr = _create_locale(LC_NUMERIC, "fr-FR");

    // An example of the atof function
    // using leading and training spaces.
    str = "  3336402735171707160320 ";
    value = atof(str);
    printf("Function: atof(\"%s\") = %e\n", str, value);

    // Another example of the atof function
    // using the 'E' exponential formatting keyword.
    str = "3.1412764583E210";
    value = atof(str);
    printf("Function: atof(\"%s\") = %e\n", str, value);

    // An example of the atof and _atof_l functions
    // using the 'e' exponential formatting keyword
    // and showing different decimal point interpretations.
    str = "  -2,309e-25";
    value = atof(str);
    printf("Function: atof(\"%s\") = %e\n", str, value);
    value = _atof_l(str, fr);
    printf("Function: _atof_l(\"%s\", fr)) = %e\n", str, value);
}
Function: atof("  3336402735171707160320 ") = 3.336403e+21
Function: atof("3.1412764583E210") = 3.141276e+210
Function: atof("  -2,309e-25") = -2.000000e+00
Function: _atof_l("  -2,309e-25", fr)) = -2.309000e-25

Baca juga

Konversi data
Dukungan matematika dan titik mengambang
Lokal
_ecvt
_fcvt
_gcvt
setlocale, _wsetlocale
_atodbl, _atodbl_l, _atoldbl, _atoldbl_l, _atoflt, _atoflt_l