C ++ atof () - Perpustakaan Standard C ++

Fungsi atof () dalam C ++ menafsirkan isi rentetan sebagai nombor titik terapung dan mengembalikan nilainya sebagai dua.

prototaip atof ()

 double atof (const char * str);

Ia ditakrifkan dalam fail tajuk.

atof () Parameter

  • str - Rentetan yang mempunyai perwakilan nombor titik terapung.

atof () Nilai pulangan

Fungsi atof () mengembalikan:

  • nilai berganda (yang ditukarkan dari rentetan).
  • 0.0 sekiranya tiada penukaran yang sah dapat dilakukan.

Sekiranya nilai yang ditukar berada di luar julat, ia menyebabkan tingkah laku yang tidak ditentukan.

Contoh 1: Bagaimana fungsi atof () berfungsi?

 #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; ) 

Semasa anda menjalankan program, outputnya adalah:

 Nombor dalam Rentetan = -32.40 Nombor dalam Ganda = -32.4 

Nilai floating-point yang sah untuk fungsi atof () terdiri daripada tanda + atau - pilihan yang diikuti oleh salah satu set berikut:

  • Untuk nilai titik apungan perpuluhan:
    • Kumpulan digit perpuluhan (0-9) , secara opsional mengandungi titik perpuluhan (.). Contohnya: 9.056, -0.013, dll.
    • Bahagian eksponen pilihan ( eatau E) diikuti dengan tanda + atau - pilihan dan urutan digit perpuluhan yang tidak kosong. Contohnya: 1.23455e + 009, 5.23e-018, dll.
  • Untuk nilai titik terapung heksadesimal:
    • Rentetan yang bermula dengan 0xatau 0X, diikuti oleh urutan digit heksadesimal yang tidak kosong, secara opsional mengandungi titik perpuluhan (.). Contohnya: 0xf1b, -0xb1b.51, dll.
    • Bahagian eksponen pilihan ( patau P) diikuti dengan tanda + atau - pilihan dan urutan digit heksadesimal kosong. Contohnya: 0x51c.23p5, -0x2a.3p-3, dll.
  • Infiniti:
    • INFatau INFINITY(mengabaikan kes). Contohnya: -iNf, INfINiTy, dll.
  • NaN (Bukan Nombor):
    • NANatau NANsequence(mengabaikan kes) di mana urutan adalah urutan watak yang hanya terdiri daripada watak alfanumerik atau garis bawah (_). Hasilnya adalah NaN yang tenang. Contohnya: Nan, NaN12, dll.

Contoh 2: Bagaimana atof () berfungsi 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; ) 

Semasa anda menjalankan program, outputnya adalah:

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

Contoh 3: atof Kes untuk 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; ) 

Semasa anda menjalankan program, outputnya adalah:

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

Secara umum, argumen floating point yang sah untuk fungsi atof () mempunyai bentuk berikut:

 (ruang kosong) (- | +) (digit) (.digits) ((e | E) (- | +) digit)

Fungsi atof () mengabaikan semua watak ruang kosong utama sehingga watak bukan ruang kosong utama dijumpai.

Kemudian, bermula dari watak ini, diperlukan sebanyak mungkin watak yang membentuk perwakilan titik apungan yang sah dan mengubahnya menjadi nilai titik terapung. Apa sahaja yang tersisa dari rentetan setelah watak yang terakhir terakhir diabaikan dan tidak memberi kesan pada hasilnya.

Contoh 4: fungsi atof () dengan ruang kosong dan watak belakang

 #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; )

Semasa anda menjalankan program, outputnya adalah:

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

Artikel menarik...