Hai! Sebagai pemasok switch, saya sering ditanyai beberapa pertanyaan teknis tentang switch, dan salah satu yang sering muncul adalah apakah pernyataan switch dapat digunakan dengan angka floating - point di C++. Mari gali topik ini dan temukan jawabannya.


Pertama, mari kita rekap dengan cepat apa itu pernyataan switch di C++. Pernyataan switch adalah pernyataan aliran kontrol yang memungkinkan variabel diuji kesetaraannya terhadap daftar nilai. Setiap nilai disebut case, dan pernyataan switch melompat ke case yang cocok dengan nilai variabel. Ini adalah cara praktis untuk menyederhanakan serangkaian pernyataan if - else ketika Anda memiliki beberapa kondisi untuk diperiksa.
int angka = 2; switch(angka) { kasus 1: std::cout << "Nomornya adalah 1." << std::endl; merusak; kasus 2: std::cout << "Nomornya adalah 2." << std::endl; merusak; default: std::cout << "Nomornya bukan 1 atau 2." << std::endl; }
Dalam contoh di atas, pernyataan switch memeriksa nilai variabel integerdi sebuah. Jikadi sebuahadalah 1, ia mencetak "Nomornya adalah 1." Jika 2, maka akan tercetak "Nomornya 2". Dan jika bukan keduanya, maka akan masuk kebawaankasus.
Sekarang, mari kita bicara tentang bilangan floating - point. Bilangan floating - point digunakan untuk menyatakan bilangan real dengan bagian pecahan, seperti 3,14 atau 2,718. Mereka disimpan dalam memori menggunakan format tertentu yang dapat menyebabkan beberapa masalah presisi.
Jadi, bisakah kita menggunakan pernyataan switch dengan angka floating - point di C++? Jawaban singkatnya adalah tidak. Standar C++ secara eksplisit menyatakan bahwa ekspresi dalam pernyataan switch harus memiliki tipe integral atau enumerasi. Jenis titik mengambang, sepertimengambangDandobel, tidak diperbolehkan.
Alasan di balik pembatasan ini terutama karena masalah presisi angka floating - point. Angka floating - point direpresentasikan dalam biner, dan tidak semua angka desimal dapat direpresentasikan secara tepat dalam biner. Misalnya, bilangan desimal 0,1 tidak dapat direpresentasikan secara tepat sebagai bilangan titik mengambang biner. Artinya, saat Anda membandingkan dua bilangan floating - point untuk kesetaraan, mungkin ada perbedaan kecil karena ketepatan representasinya.
mengapung a = 0,1; mengapung b = 0,1; if(a == b) { std::cout << "Mereka setara." << std::endl; } else { std::cout << "Mereka tidak setara." << std::endl; }
Secara teori,ADanBseharusnya sama, namun karena masalah presisi, mungkin ada perbedaan kecil di antara keduanya, dan perbandingannya mungkin tidak berjalan sesuai harapan. Karena pernyataan switch bergantung pada perbandingan kesetaraan yang tepat, penggunaan angka floating - point akan menyebabkan perilaku yang tidak dapat diprediksi.
Tapi jangan khawatir! Masih ada cara untuk mencapai fungsionalitas serupa jika Anda perlu menangani kasus berbeda berdasarkan nilai floating - point. Salah satu pendekatan yang umum adalah dengan menggunakan serangkaian pernyataan if - else dengan toleransi yang sesuai untuk perbandingan floating - point.
nilai mengambang = 3,14; if(value >= 3.0 && value < 3.2) { std::cout << "Nilainya berada dalam rentang [3.0, 3.2)." << std::endl; } else if(value >= 3.2 && value < 3.4) { std::cout << "Nilai berada dalam rentang [3.2, 3.4)." << std::endl; } else { std::cout << "Nilai berada di luar rentang yang ditentukan." << std::endl; }
Dalam contoh ini, kami menggunakan pernyataan if - else untuk memeriksa apakah nilai floating - pointnilaiberada dalam kisaran tertentu. Dengan cara ini, kita dapat menangani kasus yang berbeda berdasarkan nilai bilangan floating point tanpa bergantung pada perbandingan kesetaraan yang tepat.
Sebagai pemasok saklar, saya tahu bahwa aplikasi yang berbeda memerlukan jenis saklar yang berbeda. Salah satu jenis saklar yang banyak digunakan di banyak industri adalahSakelar Tekanan Elektronik. Sakelar tekanan elektronik digunakan untuk memantau dan mengontrol tekanan di berbagai sistem. Mereka dapat diprogram untuk memicu suatu tindakan ketika tekanan mencapai tingkat tertentu, yang sangat berguna dalam aplikasi seperti otomasi industri, sistem HVAC, dan sistem hidrolik.
Jika Anda sedang mencari switch berkualitas tinggi, baik untuk proyek pemrograman C++ yang melibatkan pengendalian perangkat fisik atau untuk aplikasi industri lainnya, kami siap membantu Anda. Perusahaan kami menawarkan berbagai macam sakelar, termasuk sakelar tekanan elektronik, dengan spesifikasi dan fitur berbeda untuk memenuhi kebutuhan spesifik Anda.
Jika Anda tertarik untuk mempelajari lebih lanjut tentang produk kami atau ingin mendiskusikan kebutuhan Anda secara mendetail, jangan ragu untuk menghubungi kami. Kami di sini untuk membantu Anda menemukan solusi peralihan yang sempurna untuk proyek Anda. Baik Anda seorang penghobi yang mengerjakan proyek kecil atau produsen industri skala besar, kami dapat menyediakan sakelar yang Anda butuhkan dengan harga yang kompetitif.
Kesimpulannya, meskipun Anda tidak dapat menggunakan pernyataan switch dengan angka floating - point di C++, ada cara alternatif untuk menangani kasus berbeda berdasarkan nilai floating - point. Dan jika Anda mencari sakelar yang andal, kami adalah pemasok yang dapat Anda percayai. Jadi, hubungi kami hari ini dan mari mulai kemitraan yang hebat!
Referensi
- Dokumentasi Perpustakaan Standar C++
- "Bahasa Pemrograman C++" oleh Bjarne Stroustrup
