คำถามติดแท็ก comparison

คำถามเกี่ยวกับการเปรียบเทียบข้อมูลและวิธีที่มีประสิทธิภาพในการทำให้สำเร็จ โปรดหลีกเลี่ยงการใช้แท็กนี้สำหรับการเปรียบเทียบทั่วไป (meta) ของสองประเด็นหรือแนวคิด

12
เหตุผลสำหรับการเปรียบเทียบทั้งหมดที่คืนค่าเท็จสำหรับค่า IEEE754 NaN คืออะไร
ทำไมการเปรียบเทียบค่า NaN จึงแตกต่างจากค่าอื่น ๆ ทั้งหมด นั่นคือการเปรียบเทียบทั้งหมดกับโอเปอเรเตอร์ ==, <=,> =, <,> โดยที่หนึ่งหรือทั้งสองค่าเป็น NaN จะส่งคืนค่าเท็จซึ่งตรงกันข้ามกับพฤติกรรมของค่าอื่น ๆ ทั้งหมด ฉันคิดว่าสิ่งนี้จะทำให้การคำนวณเชิงตัวเลขง่ายขึ้น แต่ฉันไม่สามารถหาเหตุผลที่ระบุไว้อย่างชัดเจนไม่ได้แม้แต่ในบันทึกการบรรยายเกี่ยวกับสถานะของ IEEE 754โดย Kahan ซึ่งกล่าวถึงการตัดสินใจออกแบบรายละเอียดอื่น ๆ พฤติกรรมเบี่ยงเบนนี้ทำให้เกิดปัญหาเมื่อทำการประมวลผลข้อมูลอย่างง่าย ตัวอย่างเช่นเมื่อเรียงลำดับรายการเรคคอร์ด wrt บางฟิลด์มูลค่าจริงในโปรแกรม C ฉันจำเป็นต้องเขียนรหัสพิเศษเพื่อจัดการ NaN เป็นองค์ประกอบสูงสุดมิฉะนั้นอัลกอริทึมการเรียงลำดับอาจกลายเป็นสับสน แก้ไข: คำตอบจนถึงทุกคนยืนยันว่ามันไม่มีความหมายในการเปรียบเทียบ NaNs ฉันเห็นด้วย แต่นั่นไม่ได้หมายความว่าคำตอบที่ถูกต้องเป็นเท็จ แต่จะเป็น Not-a-Boolean (NaB) ซึ่งโชคดีที่ไม่มีอยู่จริง ดังนั้นทางเลือกของการคืนค่าจริงหรือเท็จสำหรับการเปรียบเทียบอยู่ในมุมมองของฉันโดยพลการและสำหรับการประมวลผลข้อมูลทั่วไปมันจะมีประโยชน์ถ้ามันเป็นไปตามกฎหมายปกติ (reflexivity ของ ==, trichotomy ของ <, ==,>) ซึ่งพึ่งพากฎหมายเหล่านี้จะสับสน ดังนั้นฉันขอความได้เปรียบที่เป็นรูปธรรมของการละเมิดกฎหมายเหล่านี้ไม่ใช่เพียงการให้เหตุผลเชิงปรัชญา แก้ไข …

11
ความแตกต่างในวิธีการเปรียบเทียบสตริงใน C #
การเปรียบเทียบสตริงใน C # นั้นค่อนข้างง่าย ในความเป็นจริงมีหลายวิธีที่จะทำ ฉันได้ระบุไว้บางส่วนในบล็อกด้านล่าง สิ่งที่ฉันอยากรู้เกี่ยวกับความแตกต่างระหว่างพวกเขาและเมื่อหนึ่งควรจะใช้กับคนอื่น ๆ ? ควรหลีกเลี่ยงค่าใช้จ่ายทั้งหมดหรือไม่ มีมากกว่าที่ฉันยังไม่ได้ระบุไว้? string testString = "Test"; string anotherString = "Another"; if (testString.CompareTo(anotherString) == 0) {} if (testString.Equals(anotherString)) {} if (testString == anotherString) {} (หมายเหตุ: ฉันกำลังมองหาความเสมอภาคในตัวอย่างนี้ไม่น้อยกว่าหรือมากกว่า แต่อย่าลังเลที่จะแสดงความคิดเห็นในเรื่องนั้นด้วย)
261 c#  string  comparison 

13
วิธีที่มีประสิทธิภาพมากที่สุดในการทดสอบช่วงจำนวนเต็มสองช่วงสำหรับการทับซ้อนคืออะไร
เมื่อกำหนดจำนวนเต็มสองช่วง [x1: x2] และ [y1: y2] โดยที่ x1 ≤ x2 และ y1 ≤ y2 วิธีที่มีประสิทธิภาพมากที่สุดในการทดสอบว่ามีการทับซ้อนกันของช่วงใดหรือไม่ ใช้งานง่ายมีดังนี้: bool testOverlap(int x1, int x2, int y1, int y2) { return (x1 >= y1 && x1 <= y2) || (x2 >= y1 && x2 <= y2) || (y1 >= x1 && y1 <= x2) …

26
เปรียบเทียบสองพจนานุกรมและตรวจสอบว่ามีกี่คู่ (คีย์ค่า) เท่ากัน
ฉันมีพจนานุกรมสองเล่ม แต่เพื่อความสะดวกฉันจะใช้สองสิ่งนี้: >>> x = dict(a=1, b=2) >>> y = dict(a=2, b=2) ตอนนี้ฉันต้องการเปรียบเทียบว่าแต่ละkey, valueคู่ในxมีค่าที่สอดคล้องกันyหรือไม่ ดังนั้นฉันจึงเขียนสิ่งนี้: >>> for x_values, y_values in zip(x.iteritems(), y.iteritems()): if x_values == y_values: print 'Ok', x_values, y_values else: print 'Not', x_values, y_values และใช้งานได้เนื่องจาก a tupleถูกส่งคืนแล้วเปรียบเทียบเพื่อความเท่าเทียมกัน คำถามของฉัน: ถูกต้องหรือไม่ มีวิธีที่ดีกว่าในการทำเช่นนี้? ไม่ดีกว่าความเร็วฉันกำลังพูดถึงความสง่างามของรหัส UPDATE: ฉันลืมที่จะพูดถึงว่าฉันต้องตรวจสอบว่ามีกี่key, valueคู่เท่ากัน

11
ฉันจะตรวจสอบว่าอาร์เรย์ Perl มีค่าเฉพาะได้อย่างไร
ฉันพยายามหาวิธีการตรวจสอบการมีอยู่ของค่าในอาร์เรย์โดยไม่ต้องวนซ้ำผ่านอาร์เรย์ ฉันกำลังอ่านไฟล์เพื่อหาพารามิเตอร์ ฉันมีรายการพารามิเตอร์จำนวนมากฉันไม่ต้องการจัดการ @badparamsฉันวางพารามิเตอร์ที่ไม่พึงประสงค์เหล่านี้ในอาร์เรย์ ฉันต้องการอ่านพารามิเตอร์ใหม่และหากไม่มีอยู่@badparamsให้ประมวลผล หากไม่มีอยู่@badparamsให้ไปที่การอ่านถัดไป
239 perl  arrays  comparison 

10
สลับคำสั่งสำหรับมากกว่า / น้อยกว่า
ดังนั้นฉันต้องการใช้คำสั่ง switch เช่นนี้ switch (scrollLeft) { case (<1000): //do stuff break; case (>1000 && <2000): //do stuff break; } ตอนนี้ฉันรู้แล้วว่าข้อความเหล่านี้ ( <1000) หรือ ( >1000 && <2000) ไม่ทำงาน (ด้วยเหตุผลที่แตกต่างกันอย่างชัดเจน) สิ่งที่ฉันถามคือวิธีที่มีประสิทธิภาพที่สุดในการทำสิ่งนั้น ฉันเกลียดการใช้ 30 ifคำสั่งดังนั้นฉันควรใช้ไวยากรณ์สวิตช์ มีอะไรที่ฉันทำได้บ้างไหม?

3
Python ไม่มีการเปรียบเทียบ: ฉันควรใช้“ is” หรือ ==?
บรรณาธิการของฉันเตือนฉันเมื่อเปรียบเทียบแต่ไม่มีการเตือนล่วงหน้าเมื่อฉันใช้ my_var == Nonemy_var is None ฉันทำการทดสอบใน Python shell และพิจารณาว่าทั้งคู่เป็นไวยากรณ์ที่ถูกต้อง แต่ตัวแก้ไขของฉันดูเหมือนจะบอกว่าmy_var is Noneเป็นที่ต้องการ เป็นกรณีนี้หรือไม่และถ้าเป็นเช่นนั้นทำไม

14
วิธีที่ดีที่สุดในการเปรียบเทียบ 2 เอกสาร XML ใน Java
ฉันกำลังพยายามเขียนการทดสอบอัตโนมัติของแอปพลิเคชันซึ่งโดยทั่วไปจะแปลงรูปแบบข้อความที่กำหนดเองเป็นข้อความ XML และส่งออกไปยังส่วนอื่น ๆ ฉันมีชุดข้อความอินพุต / เอาต์พุตที่ดีดังนั้นสิ่งที่ฉันต้องทำคือส่งข้อความอินพุตและฟังข้อความ XML เพื่อให้ออกมาอีกด้าน เมื่อถึงเวลาเปรียบเทียบผลลัพธ์จริงกับผลลัพธ์ที่คาดหวังฉันพบปัญหาบางอย่าง ความคิดแรกของฉันคือการเปรียบเทียบข้อความที่คาดหวังและข้อความจริง สิ่งนี้ทำงานได้ไม่ดีนักเนื่องจากข้อมูลตัวอย่างที่เรามีไม่ได้จัดรูปแบบเสมอและมักมีชื่อแทนที่ต่างกันที่ใช้สำหรับเนมสเปซ XML (และบางครั้งเนมสเปซไม่ได้ใช้เลย) ฉันรู้ว่าฉันสามารถแยกทั้งสองสายแล้วเดินผ่านแต่ละองค์ประกอบและเปรียบเทียบกับตัวเองและสิ่งนี้จะไม่ยากเกินไปที่จะทำ แต่ฉันรู้สึกว่ามันมีวิธีที่ดีกว่าหรือห้องสมุดที่ฉันสามารถใช้ประโยชน์ได้ ดังนั้นต้มคำถามคือ: กำหนด Java Strings สองรายการซึ่งทั้งคู่มี XML ที่ถูกต้องคุณจะทราบได้อย่างไรว่ามีความหมายเทียบเท่า คะแนนโบนัสหากคุณมีวิธีพิจารณาความแตกต่าง

5
ทำไมการเปรียบเทียบ == กับ Integer.valueOf (String) จึงให้ผลลัพธ์ที่แตกต่างกันสำหรับ 127 และ 128
ฉันไม่รู้ว่าเพราะเหตุใดบรรทัดโค้ดเหล่านี้จึงส่งกลับค่าที่ต่างกัน: System.out.println(Integer.valueOf("127")==Integer.valueOf("127")); System.out.println(Integer.valueOf("128")==Integer.valueOf("128")); System.out.println(Integer.parseInt("128")==Integer.valueOf("128")); ผลลัพธ์คือ: true false true ทำไมคนแรกถึงกลับมาtrueและคนที่สองกลับมาfalse? มีอะไรที่แตกต่างที่ฉันไม่รู้ระหว่าง127และ128? (แน่นอนฉันรู้ว่า127< 128.) นอกจากนี้ทำไมหนึ่งในสามกลับมาtrue? ฉันได้อ่านคำตอบของคำถามนี้แล้ว แต่ฉันยังไม่เข้าใจว่ามันจะกลับมาได้trueอย่างไรและทำไมโค้ดในบรรทัดที่สองจึงกลับfalseมา
182 java  integer  comparison 

2
Python 2 เปรียบเทียบสตริงและ int อย่างไร เหตุใดรายการจึงเปรียบเทียบมากกว่าตัวเลขและอันดับมากกว่ารายการ
ตัวอย่างต่อไปนี้มีการเพิ่มความคิดเห็นด้วยเอาต์พุต ( ดังที่เห็นใน ideone.com ): print "100" < "2" # True print "5" > "9" # False print "100" < 2 # False print 100 < "2" # True print 5 > "9" # False print "5" > 9 # True print [] > float('inf') # True print () > …

4
การเปรียบเทียบ tuple ทำงานอย่างไรใน Python
ฉันได้อ่านหนังสือการเขียนโปรแกรมCore Pythonและผู้เขียนแสดงตัวอย่างเช่น: (4, 5) < (3, 5) # Equals false ดังนั้นฉันสงสัยว่ามันเป็นเท็จอย่างไร / ทำไมเท่ากัน? ไพ ธ อนเปรียบเทียบทูเปิลทั้งสองนี้อย่างไร Btw มันไม่ได้อธิบายไว้ในหนังสือ

7
ทำไม 128 == 128 false แต่ 127 == 127 เป็นจริงเมื่อเปรียบเทียบ Integer wrappers ใน Java
class D { public static void main(String args[]) { Integer b2=128; Integer b3=128; System.out.println(b2==b3); } } เอาท์พุท: false class D { public static void main(String args[]) { Integer b2=127; Integer b3=127; System.out.println(b2==b3); } } เอาท์พุท: true หมายเหตุ: ตัวเลขระหว่าง -128 ถึง 127 เป็นจริง

9
ใช้ '=' หรือ LIKE เพื่อเปรียบเทียบสตริงใน SQL?
มีการสนทนา (เกือบทางศาสนา) หากคุณควรใช้ LIKE หรือ '=' เพื่อเปรียบเทียบสตริงในคำสั่ง SQL มีเหตุผลในการใช้ LIKE หรือไม่ มีเหตุผลให้ใช้ '=' หรือไม่? ประสิทธิภาพ? การอ่าน?
169 sql  comparison 

5
ความแตกต่างระหว่าง“! ==” และ“ ==!” [ปิด]
คำถามนี้ไม่น่าจะช่วยผู้เข้าชมในอนาคต มันเกี่ยวข้องเฉพาะกับพื้นที่ทางภูมิศาสตร์ขนาดเล็กช่วงเวลาที่เฉพาะเจาะจงหรือสถานการณ์ที่แคบเป็นพิเศษซึ่งโดยทั่วไปไม่สามารถใช้ได้กับผู้ชมทั่วโลกของอินเทอร์เน็ต สำหรับความช่วยเหลือในการทำคำถามนี้มากขึ้นบังคับในวงกว้างไปที่ศูนย์ช่วยเหลือ ปิดให้บริการใน7 ปีที่ผ่านมา เมื่อวานนี้ฉันสะดุดเมื่อฉันแก้ไขโค้ด PHP ที่เขียนโดยคนอื่น ฉันรู้สึกงุนงงว่าการเปรียบเทียบแบบธรรมดา ( if ($var ==! " ")) ไม่ทำงานอย่างที่คาดไว้ หลังจากการทดสอบบางฉันรู้ว่าใครก็ตามที่เขียนรหัสที่ใช้==!แทนการ!==เป็นผู้ดำเนินการเปรียบเทียบ ฉันไม่เคยเห็น==!ในภาษาใดเลยฉันจึงสงสัยว่ารหัสนี้จะทำงานได้อย่างไรและทำการทดสอบ: <?php echo "int\n"; echo "1 !== 0: "; var_dump(1 !== 0); echo "1 !== 1: "; var_dump(1 !== 1); echo "1 ==! 0: "; var_dump(1 ==! 0); echo "1 ==! 1: "; …

19
การเปรียบเทียบสองคอลเลกชันเพื่อความเท่าเทียมกันโดยไม่คำนึงถึงลำดับของรายการในพวกเขา
ฉันต้องการเปรียบเทียบคอลเลกชันสอง (ใน C #) แต่ฉันไม่แน่ใจว่าวิธีที่ดีที่สุดในการใช้งานได้อย่างมีประสิทธิภาพ ฉันได้อ่านหัวข้ออื่น ๆ เกี่ยวกับEnumerable.SequenceEqualแต่ไม่ใช่สิ่งที่ฉันต้องการ ในกรณีของฉันคอลเลกชันสองรายการจะเท่ากันถ้าทั้งคู่มีรายการเดียวกัน (ไม่ว่าจะเรียงตามลำดับ) ตัวอย่าง: collection1 = {1, 2, 3, 4}; collection2 = {2, 4, 1, 3}; collection1 == collection2; // true สิ่งที่ฉันมักจะทำคือการวนดูแต่ละไอเท็มของคอลเล็กชันหนึ่งและดูว่ามีอยู่ในคอลเลกชันอื่นหรือไม่จากนั้นวนลูปผ่านแต่ละรายการของคอลเลกชันอื่น (ฉันเริ่มจากการเปรียบเทียบความยาว) if (collection1.Count != collection2.Count) return false; // the collections are not equal foreach (Item item in collection1) { if (!collection2.Contains(item)) …

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.