C ++ float dan double

Dalam tutorial ini, kita akan belajar tentang tipe data float dan double dengan bantuan contoh. Kami juga akan melihat beberapa perbedaan utama di antara mereka dan kapan menggunakannya.

Di C ++, tipe data floatdan keduanya doubledigunakan untuk nilai floating-point. Angka floating-point digunakan untuk nilai desimal 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 harus menambahkan sufiks fatau Fdi akhir floatnilai. Ini karena kompilator menafsirkan nilai desimal tanpa sufiks sebagai double.

Pertimbangkan kode ini.

 float a = 5.6;

Di sini, kami telah menetapkan doublenilai ke floatvariabel.

Dalam kasus ini, 5.6 diubah floatoleh kompilator secara otomatis sebelum ditugaskan ke variabel a. Ini dapat menyebabkan hilangnya data. Untuk mempelajari lebih lanjut, kunjungi konversi Jenis C ++.

Perbedaan Antara float dan double

mengapung dua kali lipat
Ukuran: 4 byte Ukuran: 8 byte
Presisi: Secara umum, presisi 7 digit desimal Presisi: Secara umum, presisi 15 digit desimal
Contoh: 3.56f , 3e5fdll Contoh: 3.56 , 3e5dll

Catatan: Kecuali jika Anda memiliki persyaratan tertentu, selalu gunakan doublesebagai pengganti float, karena floatvariabel mungkin cenderung menimbulkan kesalahan saat bekerja dengan angka besar.

Contoh 1: C ++ float dan double

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

Keluaran

 Nomor Jenis Ganda = 3.91235 Nomor Jenis Float = 3.91235

Catatan: Kompilator yang digunakan untuk contoh ini (kompilator MinGW) diperbolehkan untuk 6 digit. Jadi, nilai variabel kita dibulatkan dan dipotong menjadi 6 digit oleh kompilator.

setprecision () untuk Menentukan Poin Desimal

Kita dapat menentukan jumlah titik desimal untuk dicetak coutdengan menggunakan setprecision()fungsi tersebut.

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

Contoh 2: Menggunakan setprecision () Untuk Bilangan Floating-Point

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

Keluaran

 Nomor Jenis Ganda = 3.912348239293 Nomor Jenis Float = 3.912348270416

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

 cout << setprecision(13);

Nilai floating-point yang telah kami tetapkan ke variabel kami juga terdiri dari 13 digit.

Namun, karena floatmemiliki presisi hingga hanya 7 digit, ini menunjukkan nilai sampah setelah presisi terlampaui.

doubleVariabel kita menunjukkan bilangan yang benar karena memiliki presisi 15 digit, sedangkan bilangan itu sendiri terdiri dari 13 digit.

Sebagai alternatif, kami dapat menentukan presisi yang berbeda untuk variabel yang berbeda saat mencetaknya.

Contoh 3: Presisi Berbeda Untuk Variabel Berbeda

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

Keluaran

 Nomor Jenis Ganda = 3.9123482393 Nomor Jenis Float = 3.912348

Dari program di atas, kita dapat melihat bahwa kita telah menetapkan dua nilai presisi yang berbeda untuk floatdan double.

Dalam kedua kasus, presisi lebih kecil dari angka sebenarnya dari angka tersebut. Jadi digit terakhir dibulatkan dan sisanya dipotong.

Catatan: Jika kita menentukan presisi lebih besar dari presisi tipe datanya sendiri (7 untuk floatdan 15 untuk double), maka compiler akan memberi kita nilai sampah setelah batas presisi terlampaui, seperti yang dapat dilihat dengan floatoutput pada contoh 2 .

Bekerja dengan Bilangan Eksponensial

Seperti disebutkan di atas, floatdan doublejuga dapat digunakan untuk merepresentasikan bilangan eksponensial . Sebagai contoh,

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

C ++ mengeluarkan bilangan eksponensial dan bilangan yang sangat besar dalam format yang disebut format ilmiah . Variabel ex akan dikeluarkan dalam format ini secara default karena jumlahnya sangat besar.

Untuk memaksa C ++ untuk menampilkan bilangan floating-point kami dalam scientificformat terlepas dari ukuran angkanya, kami menggunakan format specifier 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 menampilkan angka floating-point dalam format desimal.

Ini mirip dengan menampilkan angka floating-point hanya dengan menggunakan couttanpa setprecision(), kecuali fakta yang fixedmenampilkan angka hingga 6 titik desimal.

Di sisi lain, hanya menggunakan coutdigit tampilan sesuai dengan kompilator tertentu (total 6 digit dalam kasus kompilator MinGW , termasuk digit sebelum koma desimal).

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

Keluaran

 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: Tipe data floating-point yang didukung oleh C ++ adalah float, doubledan long double. Tidak ada long float.

Artikel yang menarik...