strtold, _strtold_l, wcstold, _wcstold_l

Mengonversi string menjadi nilai floating-point presisi ganda yang panjang.

Sintaks

long double strtold(
   const char *strSource,
   char **endptr
);
long double _strtold_l(
   const char *strSource,
   char **endptr,
   _locale_t locale
);
long double wcstold(
   const wchar_t *strSource,
   wchar_t **endptr
);
long double wcstold_l(
   const wchar_t *strSource,
   wchar_t **endptr,
   _locale_t locale
);

Parameter

strSource
String yang dihentikan null untuk dikonversi.

endptr
Arahkan ke karakter yang menghentikan pemindaian.

locale
Lokal yang akan digunakan.

Nilai hasil

strtold mengembalikan nilai angka floating-point sebagai long double, kecuali ketika representasi akan menyebabkan luapan—dalam hal ini, fungsi mengembalikan +/-HUGE_VALL. Tanda HUGE_VALL cocok dengan tanda nilai yang tidak dapat diwakili. strtold mengembalikan 0 jika tidak ada konversi yang dapat dilakukan atau terjadi aliran bawah.

wcstold mengembalikan nilai secara analog ke strtold. Untuk kedua fungsi, errno diatur ke ERANGE jika luapan atau aliran bawah terjadi dan handler parameter yang tidak valid dipanggil, seperti yang dijelaskan dalam Validasi parameter.

Untuk informasi selengkapnya tentang kode pengembalian, lihat errno, , _doserrno_sys_errlist, dan _sys_nerr.

Keterangan

Setiap fungsi mengonversi string strSource input menjadi long double. Fungsi strtold berhenti membaca string strSource pada karakter pertama yang tidak dapat dikenali sebagai bagian dari angka. Ini mungkin karakter null yang mengakhiri. Versi strtold karakter lebar adalah wcstold; argumennya strSource adalah string karakter lebar. Jika tidak, fungsi-fungsi ini berulah identik.

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

Pemetaan rutin teks generik

TCHAR. Rutinitas H _UNICODE dan _MBCS tidak ditentukan _MBCS Didefinisikan _UNICODE Didefinisikan
_tcstold strtold strtold wcstold
_tcstold_l _strtold_l _strtold_l _wcstold_l

Pengaturan LC_NUMERIC kategori lokal saat ini menentukan pengenalan karakter radix di strSource. Untuk informasi selengkapnya, lihat setlocale, _wsetlocale. Fungsi tanpa akhiran _l menggunakan lokal saat ini; _strtold_l dan _wcstold_l identik _strtold dengan dan _wcstold kecuali bahwa fungsi tersebut sebaliknya menggunakan lokal yang diteruskan. Untuk informasi selengkapnya, lihat Lokal.

Jika endptr bukan NULL, penunjuk ke karakter yang menghentikan pemindaian disimpan di lokasi yang ditujukkan oleh endptr. Jika tidak ada konversi yang dapat dilakukan (tidak ada digit valid yang ditemukan atau basis yang tidak valid ditentukan), nilai strSource disimpan di lokasi yang ditunjukkan oleh endptr.

strtoldstrSource mengharapkan untuk menunjuk ke string formulir berikut:

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

whitespace Mungkin terdiri dari karakter spasi dan tab, yang diabaikan; sign adalah plus (+) atau minus (-); dan digits adalah satu atau beberapa digit desimal. Jika tidak ada digit yang muncul sebelum karakter radiks, setidaknya satu harus muncul setelah karakter radiks. Digit desimal dapat diikuti oleh eksponen, yang terdiri dari huruf pengantar (d, , D, eatau E) dan bilangan bulat yang ditandatangani secara opsional. Jika tidak ada bagian eksponen atau karakter radiks yang muncul, karakter radiks diasumsikan untuk mengikuti digit terakhir dalam string. Karakter pertama yang tidak cocok dengan formulir ini menghentikan pemindaian.

Persyaratan

Rutin Header yang diperlukan
strtold, _strtold_l <stdlib.h>
wcstold, _wcstold_l <stdlib.h> atau <wchar.h>

Untuk informasi kompatibilitas selengkapnya, lihat Kompatibilitas.

Contoh

// crt_strtold.c
// Build with: cl /W4 /Tc crt_strtold.c
// This program uses strtold to convert a
// string to a long double-precision value.

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

int main( void )
{
   char *string;
   char *stopstring;
   long double x;

   string = "3.1415926535898This stopped it";
   x = strtold(string, &stopstring);
   printf("string = %s\n", string);
   printf("   strtold = %.13Lf\n", x);
   printf("   Stopped scan at: %s\n\n", stopstring);
}
string = 3.1415926535898This stopped it
   strtold = 3.1415926535898
   Stopped scan at: This stopped it

Baca juga

Konversi data
Dukungan matematika dan titik mengambang
Interpretasi urutan karakter multibyte
Lokal
String ke fungsi nilai numerik
strtod, _strtod_l, wcstod, _wcstod_l
strtol, wcstol, _strtol_l, _wcstol_l
strtoul, _strtoul_l, wcstoul, _wcstoul_l
atof, _atof_l, _wtof, _wtof_l
localeconv
_create_locale, _wcreate_locale
_free_locale