C ++ terapung dan berganda

Dalam tutorial ini, kita akan belajar mengenai jenis data float dan double dengan bantuan contoh. Kami juga akan melihat beberapa perbezaan utama antara mereka dan kapan menggunakannya.

Dalam C ++, kedua float- duanya dan doublejenis data digunakan untuk nilai floating-point. Nombor terapung digunakan untuk nilai perpuluhan dan eksponensial . Sebagai contoh,

 // creating float type variables float num1 = 3.0f; float num2 = 3.5f; float num3 = 3E-5f; // 3x10^-5 // creating double type variables double num4 = 3.0; double num5 = 3.5; double num6 = 3E-5; // 3x10^-5

Kita mesti menambah akhiran fatau Fpada akhir floatnilai. Ini kerana penyusun menafsirkan nilai perpuluhan tanpa akhiran sebagai double.

Pertimbangkan kod ini.

 float a = 5.6;

Di sini, kami telah memberikan doublenilai kepada floatpemboleh ubah.

Dalam kes ini, 5.6 ditukar floatoleh penyusun secara automatik sebelum ditugaskan ke pemboleh ubah a. Ini boleh mengakibatkan kehilangan data. Untuk mengetahui lebih lanjut, lawati penukaran Jenis C ++.

Perbezaan Antara float dan double

terapung berganda
Saiz: 4 bait Saiz: 8 bait
Ketepatan: Secara amnya, ketepatan 7 digit perpuluhan Ketepatan: Secara amnya, ketepatan 15 digit perpuluhan
Contoh: 3.56f , 3e5fdan lain-lain Contoh: 3.56 , 3e5dan lain-lain

Catatan: Kecuali jika anda mempunyai syarat khusus, selalu gunakan doublesebagai gantinya float, kerana floatpemboleh ubah cenderung terdedah kepada kesalahan ketika bekerja dengan jumlah yang besar.

Contoh 1: apungan C ++ dan berganda

 #include #include using namespace std; int main() ( // Creating a double type variable double a = 3.912348239293; // Creating a float type variable float b = 3.912348239293f; // Printing the two variables cout << "Double Type Number = " << a << endl; cout << "Float Type Number = " << b << endl; return 0; )

Pengeluaran

 Nombor Jenis Berkembar = 3.91235 Nombor Jenis Terapung = 3.91235

Catatan: Penyusun yang digunakan untuk contoh ini (penyusun MinGW) dibenarkan untuk 6 digit. Oleh itu, nilai pemboleh ubah kami dibundarkan dan dipotong menjadi 6 digit oleh penyusun.

setprecision () untuk Menentukan Titik Perpuluhan

Kita dapat menentukan bilangan titik perpuluhan untuk dicetak coutdengan menggunakan setprecision()fungsi.

Fungsi ini didefinisikan dalam iomanipfile header, yang merupakan singkatan dari manipulasi input / output .

Contoh 2: Menggunakan setprecision () Untuk Nombor Titik Terapung

 #include #include using namespace std; int main() ( // Creating a double type variable double a = 3.912348239293; // Creating a float type variable float b = 3.912348239293f; // Setting the precision to 12 decimal places cout << setprecision(13); // Printing the two variables cout << "Double Type Number = " << a << endl; cout << "Float Type Number = " << b << endl; return 0; )

Pengeluaran

 Nombor Jenis Berkembar = 3.912348239293 Nombor Jenis Terapung = 3.912348270416

Seperti yang dapat kita lihat dari contoh di atas, kita telah menentukan ketepatannya hingga 13 digit.

 cout << setprecision(13);

Nilai floating-point yang telah kami tetapkan kepada pemboleh ubah kami juga terdiri daripada 13 digit.

Walau bagaimanapun, kerana floatketepatannya hanya 7 digit, ia menunjukkan nilai sampah setelah ketepatannya dilampaui.

doublePemboleh ubah kami menunjukkan nombor yang betul kerana ia mempunyai ketepatan 15 digit, sementara nombor itu sendiri terdiri daripada 13 digit.

Sebagai alternatif, kita dapat menentukan ketepatan yang berbeza untuk pemboleh ubah yang berbeza semasa mencetaknya.

Contoh 3: Ketepatan Berbeza Untuk Pembolehubah Berbeza

 #include #include using namespace std; int main() ( // Creating a double type variable double a = 3.912348239293; // Creating a float type variable float b = 3.912348239293f; // Setting precision to 11 for double cout << "Double Type Number = " << setprecision(11) << a << endl; // Setting precision to 7 for float cout << "Float Type Number = " << setprecision(7) << b << endl; return 0; )

Pengeluaran

 Nombor Jenis Berganda = 3.9123482393 Nombor Jenis Terapung = 3.912348

Dari program di atas, kita dapat melihat bahawa kita telah menetapkan dua nilai ketepatan yang berbeza untuk floatdan double.

Dalam kedua kes tersebut, ketepatannya lebih kecil daripada digit nombor sebenarnya. Jadi digit terakhir dibundarkan dan selebihnya dipotong.

Catatan: Sekiranya kita menentukan ketepatan yang lebih besar daripada ketepatan jenis data itu sendiri (7 untuk floatdan 15 untuk double), maka penyusun akan memberi kita nilai sampah setelah had ketepatan telah dilampaui, seperti yang dapat dilihat dengan floatoutput pada contoh 2 .

Bekerja dengan Nombor Eksponen

Seperti disebutkan di atas, floatdan doublejuga dapat digunakan untuk mewakili angka eksponensial . Sebagai contoh,

 // ex = 325 X (10 25) double ex = 325E25;

C ++ mengeluarkan nombor eksponensial dan nombor yang sangat besar dalam format yang disebut format saintifik . Pembolehubah ex akan dikeluarkan dalam format ini secara lalai kerana jumlahnya sangat banyak.

Untuk memaksa C ++ untuk menampilkan nombor titik terapung kami dalam scientificformat tanpa mengira ukurannya, kami menggunakan penentu format scientificdi dalam cout.

 double num = 3.25; // ex = 325 X (10 25) double ex = 325E25; // using scientific format cout << scientific << num; cout << scientific << ex;

Selain itu, ada penentu format lain yang dikenal sebagai fixed, yang memaparkan nombor titik terapung dalam format perpuluhan.

Ini serupa dengan menampilkan nombor titik terapung dengan hanya menggunakan couttanpa setprecision(), kecuali fakta yang fixedmenunjukkan angka hingga 6 titik perpuluhan.

Sebaliknya, hanya menggunakan coutdigit paparan mengikut penyusun tertentu (6 jumlah digit dalam kes penyusun MinGW , termasuk digit sebelum titik perpuluhan).

Contoh 4: Format Tetap dan Ilmiah

 #include #include using namespace std; int main() ( // Creating a decimal double type variable double a = 3.912348239293; // Creating an exponential double type variable double ex1 = 325e+2; // Creating a float type variable float b = 3.912348239293f; // Creating an exponential float type variable float ex2 = 325e+2f; // Displaying output with fixed cout << "Displaying Output With fixed:" << endl; cout << "Double Type Number 1 = " << fixed << a << endl; cout << "Double Type Number 2 = " << fixed << ex1 << endl; cout << "Float Type Number 1 = " << fixed << b << endl; cout << "Float Type Number 2 = " << fixed << ex2 << endl; // Displaying output with scientific cout << "Displaying Output With scientific:" << endl; cout << "Double Type Number 1 = " << scientific << a << endl; cout << "Double Type Number 2 = " << scientific << ex1 << endl; cout << "Float Type Number 1 = " << scientific << b << endl; cout << "Float Type Number 2 = " << scientific << ex2 << endl; return 0; )

Pengeluaran

 Displaying Output With fixed: Double Type Number 1 = 3.912348 Double Type Number 2 = 32500.000000 Float Type Number 1 = 3.912348 Float Type Number 2 = 32500.000000 Displaying Output With scientific: Double Type Number 1 = 3.912348e+000 Double Type Number 2 = 3.250000e+004 Float Type Number 1 = 3.912348e+000 Float Type Number 2 = 3.250000e+004

long double

Apart from float and double, there is another data type that can store floating-point numbers. This is known as long double.

It usually occupies a space of 12 bytes (depends on the computer system in use), and its precision is at least the same as double, though most of the time, it is greater than that of double.

long double values should end with L. For example,

 // declaring a long double variable long double num_ldb = 2.569L;

Catatan: Jenis data titik terapung yang disokong oleh C ++ adalah float, doubledan long double. Tidak ada long float.

Artikel menarik...