C ++ atof () - C ++ Standard Library

Fungsi atof () di C ++ mengartikan konten string sebagai angka floating point dan mengembalikan nilainya sebagai double.

atof () prototipe

 atof ganda (const char * str);

Ini didefinisikan dalam file header.

atof () Parameter

  • str - Sebuah string yang memiliki representasi dari bilangan floating point.

atof () Nilai kembali

Fungsi atof () mengembalikan:

  • nilai ganda (yang diubah dari string).
  • 0,0 jika tidak ada konversi valid yang dapat dilakukan.

Jika nilai yang dikonversi berada di luar rentang, hal itu menyebabkan perilaku tidak ditentukan.

Contoh 1: Bagaimana fungsi atof () bekerja?

 #include #include using namespace std; int main() ( char numberString() = "-32.40"; double numberInDouble; cout << "Number in String = " << numberString << endl; numberInDouble = atof(numberString); cout << "Number in Double = " << numberInDouble; return 0; ) 

Saat Anda menjalankan program, hasilnya adalah:

 Angka dalam String = -32,40 Angka dalam Ganda = -32,4 

Nilai floating-point yang valid untuk fungsi atof () terdiri dari tanda + atau - opsional yang diikuti oleh salah satu set berikut:

  • Untuk nilai floating-point desimal:
    • Sekelompok digit desimal (0-9) , secara opsional berisi titik desimal (.). Misalnya: 9.056, -0.013, dll.
    • Bagian eksponen opsional ( eatau E) diikuti dengan tanda + atau - opsional dan urutan digit desimal yang tidak kosong. Misalnya: 1.23455e + 009, 5.23e-018, dll.
  • Untuk nilai floating-point heksadesimal:
    • String yang dimulai dengan 0xatau 0X, diikuti dengan urutan digit heksadesimal yang tidak kosong, secara opsional berisi titik desimal (.). Misalnya: 0xf1b, -0xb1b.51, dll.
    • Bagian eksponen opsional ( patau P) diikuti dengan tanda + atau - opsional dan urutan digit heksadesimal yang tidak kosong. Misalnya: 0x51c.23p5, -0x2a.3p-3, dll.
  • Infinity:
    • INFatau INFINITY(mengabaikan kasus). Misalnya: -iNf, INfINiTy, dll.
  • NaN (Bukan Angka):
    • NANatau NANsequence(kasus diabaikan) di mana sequence adalah urutan karakter yang hanya terdiri dari karakter alfanumerik atau garis bawah (_). Hasilnya adalah NaN yang tenang. Misalnya: Nan, NaN12, dll.

Contoh 2: Bagaimana atof () bekerja dengan eksponen dan heksadesimal?

 #include #include using namespace std; int main() ( cout << "-44.01e-3" << " to Double = " << atof("-44.01e-0") << endl; cout << "-44.01e-3" << " to Double = " << atof("-44.01e-3") << endl; cout << "0xf1bc" << " to Double = " << atof("0xf1bc") << endl; cout << "0xf1bc.51" << " to Double = " << atof("0xf1bc.51") << endl; return 0; ) 

Saat Anda menjalankan program, hasilnya adalah:

 -44.01e-3 menjadi Double = -44.01 -44.01e-3 menjadi Double = -0.04401 0xf1bc menjadi Double = 61884 0xf1bc.51 menjadi Double = 61884.3 

Contoh 3: atof Kasus INFINITY dan NaN

 #include #include using namespace std; int main() ( cout << "INFINITY" << " to Double = " << atof("INFINITY") << endl; cout << "Inf" << " to Double = " << atof("Inf") << endl; cout << "Nan" << " to Double = " << atof("Nan") << endl; cout << "NAN" << " to Double = " << atof("NAN") << endl; return 0; ) 

Saat Anda menjalankan program, hasilnya adalah:

 INFINITY ke Double = inf Inf ke Double = inf Nan ke Double = nan NAN ke Double = nan

Secara umum, argumen floating point yang valid untuk fungsi atof () memiliki bentuk berikut:

 (spasi) (- | +) (digit) (.digits) ((e | E) (- | +) digit)

Fungsi atof () mengabaikan semua karakter spasi putih sebelum karakter non-spasi putih utama ditemukan.

Kemudian, dimulai dari karakter ini, dibutuhkan karakter sebanyak mungkin yang membentuk representasi floating-point yang valid dan mengubahnya menjadi nilai floating-point. Apa pun yang tersisa dari string setelah karakter valid terakhir diabaikan dan tidak berpengaruh pada hasil.

Contoh 4: fungsi atof () dengan spasi dan karakter tambahan

 #include #include using namespace std; int main() ( cout << "25.5" << " to Double = " << atof(" 25.5") << endl; cout << "25.5 " << " to Double = " << atof(" 25.5 ") << endl; cout << "25.5abcd" << " to Double = " << atof("25.5abcd") << endl; // Returns 0 because of invalid conversion cout << "abcd25.5" << " to Double = " << atof("abcd25.5") << endl; // Rules for whitespace and trailing character also apply for infinity and Nan cout << "INFINITYabcd" << " to Double = " << atof("INFINITYabcd") << endl; cout << "INFINITY" << " to Double = " << atof(" INFINITY") << endl; cout << "Nanlll" << " to Double = " << atof("Nanlll") << endl; return 0; )

Saat Anda menjalankan program, hasilnya adalah:

 25.5 menjadi Double = 25.5 25.5 menjadi Double = 25.5 25.5abcd menjadi Double = 25.5 abcd25.5 menjadi Double = 0 INFINITYabcd ke Double = inf INFINITY ke Double = inf Nanlll ke Double = nan

Artikel yang menarik...