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