C ++ atof () - C ++ Standart Kitaplığı

C ++ 'daki atof () işlevi bir dizenin içeriğini kayan nokta sayısı olarak yorumlar ve değerini double olarak döndürür.

atof () prototip

 double atof (const char * str);

Başlık dosyasında tanımlanmıştır.

atof () Parametreler

  • str - Bir kayan nokta sayısının temsiline sahip bir dize.

atof () Dönüş değeri

Atof () işlevi şunu döndürür:

  • çift ​​değer (dizeden dönüştürülen).
  • Geçerli dönüştürme yapılamazsa 0.0.

Dönüştürülen değer aralığın dışındaysa, tanımsız davranışa neden olur.

Örnek 1: atof () işlevi nasıl çalışır?

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

Programı çalıştırdığınızda, çıktı:

 Stringdeki Sayı = -32.40 İkili Sayı = -32.4 

Atof () işlevi için geçerli bir kayan nokta değeri, isteğe bağlı bir + veya - işaretinin ardından aşağıdaki kümelerden birini içerir:

  • Ondalık kayan nokta değeri için:
    • İsteğe bağlı olarak bir ondalık nokta (.) İçeren bir ondalık sayı grubu (0-9 ). Örneğin: 9.056, -0.013 vb.
    • İsteğe bağlı bir üs bölümü ( eveya E) ve ardından isteğe bağlı bir + veya - işareti ve boş olmayan ondalık basamak dizisi. Örneğin: 1.23455e + 009, 5.23e-018 vb.
  • Onaltılık kayan nokta değeri için:
    • 0xVeya ile başlayan ve 0Xardından isteğe bağlı olarak bir ondalık nokta (.) İçeren, boş olmayan bir onaltılık rakam dizisi izleyen bir dize . Örneğin: 0xf1b, -0xb1b.51, vb.
    • İsteğe bağlı bir üs bölümü ( pveya P) ve ardından isteğe bağlı bir + veya - işareti ve boş olmayan onaltılık rakam dizisi. Örneğin: 0x51c.23p5, -0x2a.3p-3, vb.
  • Sonsuzluk:
    • INFveya INFINITY(büyük / küçük harf görmezden gelinerek). Örneğin: -iNf, INfINiTy, vb.
  • NaN (Sayı Değil):
    • NANveya NANsequence(büyük / küçük harf dikkate alınmaz) burada sıra yalnızca alfanümerik karakterlerden veya alt çizgiden (_) oluşan bir karakter dizisidir.Sonuç, sessiz bir NaN'dir. Örneğin: Nan, NaN12, vb.

Örnek 2: atof () üsler ve onaltılık sayılarla nasıl çalışır?

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

Programı çalıştırdığınızda, çıktı:

 -44.01e-3'ten İkiye = -44.01 -44.01e-3'ten İkiye = -0.04401 0xf1bc'den İkiye = 61884 0xf1bc.51'den İkiye = 61884.3 

Örnek 3: INFINITY ve NaN için Vakalar

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

Programı çalıştırdığınızda, çıktı:

 SONSUZLUK - İkiye inf İnf İkiye = inf Nan - Çift = nan NAN - İkiye = nan

Genel olarak, atof () işlevi için geçerli bir kayan nokta bağımsız değişkeni aşağıdaki biçime sahiptir:

 (boşluk) (- | +) (rakamlar) (.digits) ((e | E) (- | +) rakamlar)

Atof () işlevi, birincil boşluk olmayan karakter bulunana kadar tüm öndeki boşluk karakterlerini yok sayar.

Daha sonra, bu karakterden başlayarak, geçerli bir kayan nokta gösterimi oluşturan ve bunları bir kayan nokta değerine dönüştüren mümkün olduğunca çok karakter alır. Son geçerli karakterden sonra dizeden geriye kalanlar yok sayılır ve sonuç üzerinde hiçbir etkisi yoktur.

Örnek 4: Boşluk ve sondaki karakterlerle atof () işlevi

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

Programı çalıştırdığınızda, çıktı:

 25,5 - İkiye = 25,5 25,5 - İkiye = 25,5 25,5abcd - İkiye = 25,5 abcd25,5 - İkiye = 0 INFINITYabcd - İkiye = inf INFINITY - Double = inf Nanlll - Double = nan

Ilginç makaleler...