เฮ้! ในฐานะซัพพลายเออร์สวิตช์ ฉันมักจะถูกถามคำถามทางเทคนิคเกี่ยวกับสวิตช์ และคำถามที่พบบ่อยคือคำสั่ง switch สามารถใช้กับตัวเลขทศนิยมใน C++ ได้หรือไม่ มาเจาะลึกหัวข้อนี้และค้นหาคำตอบกัน


ก่อนอื่น เรามาสรุปกันก่อนว่าคำสั่ง switch คืออะไรในภาษา C++ คำสั่ง switch คือคำสั่ง control flow ที่อนุญาตให้ตัวแปรทดสอบความเท่าเทียมกันกับรายการค่า แต่ละค่าเรียกว่า case และคำสั่ง switch จะข้ามไปยัง case ที่ตรงกับค่าของตัวแปร เป็นวิธีที่สะดวกในการลดความซับซ้อนของชุดคำสั่ง if - else เมื่อคุณมีหลายเงื่อนไขที่ต้องตรวจสอบ
จำนวน int = 2; switch(num) { กรณีที่ 1: std::cout << "ตัวเลขคือ 1" << มาตรฐาน::endl; หยุดพัก; กรณีที่ 2: std::cout << "ตัวเลขคือ 2" << มาตรฐาน::endl; หยุดพัก; ค่าเริ่มต้น: std::cout << "ตัวเลขไม่ใช่ 1 หรือ 2" << มาตรฐาน::endl; -
ในตัวอย่างข้างต้น คำสั่ง switch จะตรวจสอบค่าของตัวแปรจำนวนเต็มใน- ถ้าในคือ 1 มันพิมพ์ว่า "ตัวเลขคือ 1" ถ้าเป็น 2 จะพิมพ์ว่า "ตัวเลขคือ 2" และถ้าไม่ใช่ทั้งสองก็จะไปที่ค่าเริ่มต้นกรณี.
ทีนี้มาพูดถึงตัวเลขทศนิยมกัน ตัวเลขทศนิยมใช้แทนจำนวนจริงที่มีเศษส่วน เช่น 3.14 หรือ 2.718 ข้อมูลเหล่านี้จะถูกจัดเก็บไว้ในหน่วยความจำโดยใช้รูปแบบเฉพาะที่อาจนำไปสู่ปัญหาด้านความแม่นยำบางประการได้
ดังนั้น เราสามารถใช้คำสั่ง switch กับตัวเลขทศนิยมในภาษา C++ ได้หรือไม่? คำตอบสั้น ๆ คือไม่ มาตรฐาน C++ ระบุอย่างชัดเจนว่านิพจน์ในคำสั่ง switch ต้องมีอินทิกรัลหรือประเภทการแจงนับ ประเภทจุดลอยตัว เช่นลอยและสองเท่าไม่ได้รับอนุญาต
เหตุผลเบื้องหลังข้อจำกัดนี้ส่วนใหญ่เนื่องมาจากปัญหาความแม่นยำของตัวเลขทศนิยม ตัวเลขทศนิยมจะแสดงในรูปแบบไบนารี่ และตัวเลขทศนิยมบางส่วนไม่สามารถแสดงในรูปแบบไบนารี่ทุกประการได้ ตัวอย่างเช่น เลขทศนิยม 0.1 ไม่สามารถแสดงเป็นเลขทศนิยมแบบไบนารีได้ทั้งหมด ซึ่งหมายความว่าเมื่อคุณเปรียบเทียบตัวเลขทศนิยมสองตัวเพื่อความเท่าเทียมกัน อาจมีความแตกต่างเล็กน้อยเนื่องจากความแม่นยำของการแทนค่า
ลอย = 0.1; ลอย b = 0.1; if(a == b) { std::cout << "พวกเขาเท่าเทียมกัน" << มาตรฐาน::endl; } else { std::cout << "พวกมันไม่เท่ากัน" << มาตรฐาน::endl; -
ในทางทฤษฎีกและขควรเท่ากัน แต่เนื่องจากปัญหาด้านความแม่นยำ อาจมีความแตกต่างเล็กน้อยระหว่างกัน และการเปรียบเทียบอาจไม่ทำงานตามที่คาดไว้ เนื่องจากคำสั่ง switch อาศัยการเปรียบเทียบความเท่าเทียมกันที่แน่นอน การใช้ตัวเลขทศนิยมจะนำไปสู่พฤติกรรมที่คาดเดาไม่ได้
แต่ไม่ต้องกังวล! ยังมีวิธีต่างๆ ที่จะบรรลุฟังก์ชันการทำงานที่คล้ายกัน หากคุณต้องการจัดการกรณีต่างๆ โดยยึดตามค่าทศนิยม วิธีการทั่วไปวิธีหนึ่งคือการใช้ชุดคำสั่ง if - else ที่มีความทนทานต่อการเปรียบเทียบจุดลอยตัวอย่างเหมาะสม
ค่าลอยตัว = 3.14; if(value >= 3.0 && value < 3.2) { std::cout << "ค่าอยู่ในช่วง [3.0, 3.2)" << มาตรฐาน::endl; } else if(value >= 3.2 && value < 3.4) { std::cout << "ค่าอยู่ในช่วง [3.2, 3.4)" << มาตรฐาน::endl; } else { std::cout << "ค่าอยู่นอกช่วงที่กำหนด" << มาตรฐาน::endl; -
ในตัวอย่างนี้ เราใช้คำสั่ง if - else เพื่อตรวจสอบว่าค่าจุดลอยตัวหรือไม่ค่าตกอยู่ในช่วงที่กำหนด ด้วยวิธีนี้ เราสามารถจัดการกับกรณีต่างๆ ได้โดยขึ้นอยู่กับค่าของจำนวนจุดลอยตัว โดยไม่ต้องอาศัยการเปรียบเทียบความเท่ากันทุกประการ
ในฐานะซัพพลายเออร์สวิตช์ ฉันรู้ว่าแอปพลิเคชันที่แตกต่างกันต้องใช้สวิตช์ประเภทต่างๆ สวิตช์ประเภทหนึ่งที่ใช้กันอย่างแพร่หลายในหลายอุตสาหกรรมคือสวิตช์ความดันอิเล็กทรอนิกส์- สวิตช์แรงดันอิเล็กทรอนิกส์ใช้ในการติดตามและควบคุมแรงดันในระบบต่างๆ สามารถตั้งโปรแกรมให้กระตุ้นการทำงานเมื่อความดันถึงระดับหนึ่งได้ ซึ่งมีประโยชน์มากในการใช้งาน เช่น ระบบอัตโนมัติทางอุตสาหกรรม ระบบ HVAC และระบบไฮดรอลิก
หากคุณอยู่ในตลาดสวิตช์คุณภาพสูง ไม่ว่าจะเป็นสำหรับโปรเจ็กต์การเขียนโปรแกรม C++ ที่เกี่ยวข้องกับการควบคุมอุปกรณ์ทางกายภาพหรือสำหรับการใช้งานทางอุตสาหกรรมอื่นๆ เราก็ช่วยคุณได้ บริษัทของเรานำเสนอสวิตช์หลากหลายประเภท รวมถึงสวิตช์แรงดันอิเล็กทรอนิกส์ พร้อมข้อกำหนดและคุณสมบัติที่แตกต่างกันเพื่อตอบสนองความต้องการเฉพาะของคุณ
หากคุณสนใจที่จะเรียนรู้เพิ่มเติมเกี่ยวกับผลิตภัณฑ์ของเราหรือต้องการหารือเกี่ยวกับความต้องการของคุณโดยละเอียด อย่าลังเลที่จะติดต่อเรา เราพร้อมช่วยคุณค้นหาโซลูชันสวิตช์ที่สมบูรณ์แบบสำหรับโครงการของคุณ ไม่ว่าคุณจะเป็นงานอดิเรกที่ทำงานในโครงการขนาดเล็กหรือผู้ผลิตในอุตสาหกรรมขนาดใหญ่ เราสามารถจัดหาสวิตช์ที่คุณต้องการในราคาที่แข่งขันได้
โดยสรุป แม้ว่าคุณจะไม่สามารถใช้คำสั่ง switch กับตัวเลขทศนิยมในภาษา C++ ได้ แต่ก็มีวิธีอื่นในการจัดการกรณีต่างๆ ตามค่าทศนิยม และหากคุณกำลังมองหาสวิตช์ที่เชื่อถือได้ เราคือซัพพลายเออร์ที่คุณไว้วางใจได้ ติดต่อเราวันนี้และเริ่มต้นความร่วมมือที่ยอดเยี่ยมกันเถอะ!
อ้างอิง
- เอกสารไลบรารีมาตรฐาน C++
- "ภาษาการเขียนโปรแกรม C++" โดย Bjarne Stroustrup
