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 float
dan keduanya double
digunakan 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 f
atau F
di akhir float
nilai. Ini karena kompilator menafsirkan nilai desimal tanpa sufiks sebagai double
.
Pertimbangkan kode ini.
float a = 5.6;
Di sini, kami telah menetapkan double
nilai ke float
variabel.
Dalam kasus ini, 5.6 diubah float
oleh 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 , 3e5f dll | Contoh: 3.56 , 3e5 dll |
Catatan: Kecuali jika Anda memiliki persyaratan tertentu, selalu gunakan double
sebagai pengganti float
, karena float
variabel 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 cout
dengan menggunakan setprecision()
fungsi tersebut.
Fungsi ini didefinisikan dalam iomanip
file 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 float
memiliki presisi hingga hanya 7 digit, ini menunjukkan nilai sampah setelah presisi terlampaui.
double
Variabel 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 float
dan 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 float
dan 15 untuk double
), maka compiler akan memberi kita nilai sampah setelah batas presisi terlampaui, seperti yang dapat dilihat dengan float
output pada contoh 2 .
Bekerja dengan Bilangan Eksponensial
Seperti disebutkan di atas, float
dan double
juga 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 scientific
format terlepas dari ukuran angkanya, kami menggunakan format specifier scientific
di 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 cout
tanpa setprecision()
, kecuali fakta yang fixed
menampilkan angka hingga 6 titik desimal.
Di sisi lain, hanya menggunakan cout
digit 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
, double
dan long double
. Tidak ada long float
.