亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

對于IEEE 754 NaN值返回false的所有比較的理由是什么?

對于IEEE 754 NaN值返回false的所有比較的理由是什么?

對于IEEE 754 NaN值返回false的所有比較的理由是什么?為什么對NaN值的比較與所有其他值的行為不同?也就是說,與操作符=、<=、>=、<、>的所有比較,其中一個或兩個值為NaN返回false,這與所有其他值的行為相反。我想這在某種程度上簡化了數值計算,但我找不到明確說明的原因,甚至在關于IEEE 754現狀的講義其中詳細討論了其他設計決策。這種不正常的行為在進行簡單的數據處理時會造成麻煩。例如,當對記錄列表進行排序時,w.r.t。在一個C程序中的一些實值字段,我需要編寫額外的代碼來處理作為最大元素的NaN,否則排序算法可能會變得混亂。編輯:到目前為止,所有的答案都認為比較NAN是毫無意義的。我同意,但這并不意味著正確的答案是錯誤的,而是一個非布爾值(NAB),幸運的是它并不存在。因此,在我看來,為比較返回真假的選擇是任意的,對于一般的數據處理來說,如果它遵循通常的定律(自反性=,<,=,>的三分法),那么它將是有利的,以免依賴這些定律的數據結構變得混亂。所以我要求的是打破這些規律的一些具體好處,而不僅僅是哲學推理。編輯2:我想我現在明白了為什么要使NaN最大化是個壞主意,它會把上限的計算搞砸。NaN!=NaN可能是避免在循環中檢測收斂的理想方法,例如while (x != oldX) {     oldX = x;     x = better_approximation(x); }但是,最好是將絕對差與小限度進行比較。因此,IMHO,這是一個相對薄弱的理由,打破自反性在NaN。
查看完整描述

4 回答

?
慕的地10843

TA貢獻1785條經驗 獲得超8個贊

NaN可以被認為是一個未定義的狀態/數字。類似于0/0是未定義或sqrt(-3)的概念(在實數系統中,浮點存在)。

NaN用作這種未定義狀態的占位符。從數學上講,未定義不等于未定義。您也不能說一個未定義的值大于或小于另一個未定義的值。因此,所有比較都返回false。

在比較sqrt(-3)和sqrt(-2)的情況下,這種行為也是有利的。它們都會返回NaN,但是即使它們返回相同的值,它們也不是等價的。因此,在處理NaN時,平等總是返回FALSE是理想的行為。


查看完整回答
反對 回復 2019-06-03
?
哆啦的時光機

TA貢獻1779條經驗 獲得超6個贊

再加上另一個類比。如果我遞給你兩個盒子,告訴你兩個盒子都沒有蘋果,你會告訴我盒子里裝的東西是一樣的嗎?

NaN不包含關于什么是什么,只是它不是什么的信息。因此,這些要素絕對不能說是平等的。


查看完整回答
反對 回復 2019-06-03
  • 4 回答
  • 0 關注
  • 788 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號