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 double
jenis 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 f
atau F
pada akhir float
nilai. Ini kerana penyusun menafsirkan nilai perpuluhan tanpa akhiran sebagai double
.
Pertimbangkan kod ini.
float a = 5.6;
Di sini, kami telah memberikan double
nilai kepada float
pemboleh ubah.
Dalam kes ini, 5.6 ditukar float
oleh 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 , 3e5f dan lain-lain | Contoh: 3.56 , 3e5 dan lain-lain |
Catatan: Kecuali jika anda mempunyai syarat khusus, selalu gunakan double
sebagai gantinya float
, kerana float
pemboleh 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 cout
dengan menggunakan setprecision()
fungsi.
Fungsi ini didefinisikan dalam iomanip
file 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 float
ketepatannya hanya 7 digit, ia menunjukkan nilai sampah setelah ketepatannya dilampaui.
double
Pemboleh 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 float
dan 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 float
dan 15 untuk double
), maka penyusun akan memberi kita nilai sampah setelah had ketepatan telah dilampaui, seperti yang dapat dilihat dengan float
output pada contoh 2 .
Bekerja dengan Nombor Eksponen
Seperti disebutkan di atas, float
dan double
juga 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 scientific
format tanpa mengira ukurannya, kami menggunakan penentu format 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 memaparkan nombor titik terapung dalam format perpuluhan.
Ini serupa dengan menampilkan nombor titik terapung dengan hanya menggunakan cout
tanpa setprecision()
, kecuali fakta yang fixed
menunjukkan angka hingga 6 titik perpuluhan.
Sebaliknya, hanya menggunakan cout
digit 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
, double
dan long double
. Tidak ada long float
.