Hei ada! Sebagai pembekal suis, saya sering bertanya beberapa soalan teknikal mengenai suis, dan satu yang muncul agak sedikit adalah sama ada pernyataan suis boleh digunakan dengan nombor terapung di C ++. Mari menggali topik ini dan cari jawapannya.


Mula -mula, mari kita cepat recap apa pernyataan suis dalam C ++. Pernyataan suis adalah pernyataan aliran kawalan yang membolehkan pemboleh ubah diuji untuk kesamaan terhadap senarai nilai. Setiap nilai dipanggil kes, dan pernyataan suis melompat ke kes yang sepadan dengan nilai pembolehubah. Ia adalah cara yang berguna untuk memudahkan satu siri jika - pernyataan lain apabila anda mempunyai pelbagai syarat untuk diperiksa.
int num = 2; suis (num) {case 1: std :: cout << "Nombor itu 1." << std :: endl; rehat; Kes 2: std :: cout << "Nombor itu 2." << std :: endl; rehat; Lalai: std :: cout << "Nombor itu tidak 1 atau 2." << std :: endl; }
Dalam contoh di atas, pernyataan suis memeriksa nilai pemboleh ubah integerdalam a. Jikadalam aadalah 1, ia mencetak "Nombor adalah 1." Sekiranya 2, ia mencetak "Nombor itu 2." Dan jika tidak, ia pergi kelalaikes.
Sekarang, mari kita bercakap mengenai nombor terapung - titik. Terapung - Nombor titik digunakan untuk mewakili nombor sebenar dengan bahagian pecahan, seperti 3.14 atau 2.718. Mereka disimpan dalam ingatan menggunakan format tertentu yang boleh membawa kepada beberapa isu ketepatan.
Jadi, bolehkah kita menggunakan pernyataan suis dengan nombor terapung - titik di C ++? Jawapan ringkasnya tidak. Standard C ++ secara eksplisit menyatakan bahawa ungkapan dalam pernyataan suis mesti mempunyai jenis integral atau penghitungan. Jenis terapung - titik, sepertiterapungdanganda, tidak dibenarkan.
Alasan di sebalik sekatan ini adalah disebabkan oleh isu ketepatan nombor terapung - titik. Terapung - Nombor titik diwakili dalam binari, dan tidak semua nombor perpuluhan boleh diwakili tepat dalam binari. Sebagai contoh, nombor perpuluhan 0.1 tidak boleh diwakili tepat sebagai nombor terapung binari - titik. Ini bermakna apabila anda membandingkan dua nombor terapung - titik untuk kesamaan, mungkin terdapat perbezaan kecil kerana ketepatan perwakilan.
terapung A = 0.1; Float B = 0.1; jika (a == b) {std :: cout << "Mereka sama." << std :: endl; } else {std :: cout << "Mereka tidak sama." << std :: endl; }
Dalam teori,adanbHarus sama, tetapi disebabkan oleh masalah ketepatan, mungkin terdapat perbezaan kecil di antara mereka, dan perbandingan mungkin tidak berfungsi seperti yang diharapkan. Oleh kerana pernyataan suis bergantung pada perbandingan kesamaan yang tepat, menggunakan nombor terapung - titik akan membawa kepada tingkah laku yang tidak dapat diramalkan.
Tetapi jangan risau! Masih ada cara untuk mencapai fungsi yang sama jika anda perlu mengendalikan kes -kes yang berbeza berdasarkan nilai terapung. Satu pendekatan yang biasa adalah menggunakan satu siri jika - pernyataan lain dengan toleransi yang sesuai untuk perbandingan titik terapung.
nilai terapung = 3.14; jika (nilai> = 3.0 && nilai <3.2) {std :: cout << "Nilai berada dalam julat [3.0, 3.2)." << std :: endl; } else if (value> = 3.2 && nilai <3.4) {std :: cout << "Nilai berada dalam julat [3.2, 3.4)." << std :: endl; } else {std :: cout << "Nilai di luar julat yang ditakrifkan." << std :: endl; }
Dalam contoh ini, kami menggunakan jika - pernyataan lain untuk memeriksa sama ada nilai terapung -nilaijatuh dalam julat tertentu. Dengan cara ini, kita boleh mengendalikan kes -kes yang berbeza berdasarkan nilai nombor terapung - tanpa bergantung pada perbandingan kesamaan yang tepat.
Sebagai pembekal suis, saya tahu bahawa aplikasi yang berbeza memerlukan pelbagai jenis suis. Satu jenis suis yang digunakan secara meluas dalam banyak industri adalahSuis tekanan elektronik. Suis tekanan elektronik digunakan untuk memantau dan mengawal tekanan dalam pelbagai sistem. Mereka boleh diprogramkan untuk mencetuskan tindakan apabila tekanan mencapai tahap tertentu, yang sangat berguna dalam aplikasi seperti automasi perindustrian, sistem HVAC, dan sistem hidraulik.
Sekiranya anda berada di pasaran untuk suis berkualiti tinggi, sama ada untuk projek pengaturcaraan C ++ yang melibatkan mengawal peranti fizikal atau untuk aplikasi perindustrian yang lain, kami telah mendapat anda dilindungi. Syarikat kami menawarkan pelbagai suis, termasuk suis tekanan elektronik, dengan spesifikasi dan ciri yang berbeza untuk memenuhi keperluan khusus anda.
Jika anda berminat untuk mempelajari lebih lanjut mengenai produk kami atau ingin membincangkan keperluan anda secara terperinci, jangan teragak -agak untuk menjangkau. Kami berada di sini untuk membantu anda mencari penyelesaian suis yang sempurna untuk projek anda. Sama ada anda seorang penggemar yang bekerja pada projek kecil atau pengeluar perindustrian skala besar, kami dapat menyediakan suis yang anda perlukan pada harga yang kompetitif.
Kesimpulannya, semasa anda tidak dapat menggunakan pernyataan suis dengan nombor terapung - titik di C ++, terdapat cara alternatif untuk mengendalikan kes -kes yang berbeza berdasarkan nilai terapung - titik. Dan jika anda mencari suis yang boleh dipercayai, kami adalah pembekal yang boleh anda percayai. Jadi, berhubung dengan kami hari ini dan mari kita mulakan perkongsian yang hebat!
Rujukan
- C ++ Dokumentasi Perpustakaan Standard
- "Bahasa pengaturcaraan C ++" oleh Bjarne Stroustrup
