複製鏈接
請複製以下鏈接發送給好友

NaN

(數值數據類型的一類值)

鎖定
NaNNot a Number,非數)是計算機科學中數值數據類型的一類值,表示未定義或不可表示的值。常在浮點數運算中使用。首次引入NaN的是1985年的IEEE 754浮點數標準。
中文名
非數
外文名
NaN
類    型
計算機用語
作    用
用於處理計算中出現的錯誤情況
全    稱
Not a Number

NaN簡介

NaNNotaNumber,非數)是計算機科學中數值數據類型的一類值,表示未定義或不可表示的值。常在浮點數運算中使用。首次引入NaN的是1985年的IEEE 754浮點數標準。

NaN浮點數

在浮點數運算中,NaN與無窮大的概念不同,儘管兩者均是以浮點數表示實數時的特殊值。無效操作(Invalid Operation)同樣也不同於算術溢出(可能返回無窮大)和算術下溢出(可能返回最小的一般數值、特殊數值、零等)。
IEEE 754-1985中,用指數部分全為1、小數部分非零表示NaN。以32位IEEE單精度浮點數的NaN為例,按位表示即:S111 1111 1AXX XXXX XXXX XXXX XXXX XXXX,S為符號位,符號位S的取值無關緊要;A是小數部分的最高位( the most significant bit of the significand),其取值表示了NaN的類型:X不能全為0,並被稱為NaN的payload;
  • 大多數處理器,包括Intel與AMDx86系列、Motorola68000系列、AIMPowerPC系列、ARM系列、SunSPARC系列,採取了A為'is_quiet'標記位。即,如果A = 1,則該數是quiet NaN;如果A為零、其餘X部分非零,則是signaling NaN。IEEE 754-2008標準採納了這一方案。
  • PA-RISCMIPS處理器,採取了A為'is_signaling'標記位。恰與上述相反。 [1] 
返回NaN的運算
返回NaN的運算有如下三種:

NaN整數的NaN

大多數定長的整數格式無法顯式表示無效數據。
Perl的BigInt包用“NaN”來表示不含有效整數數據字符串的處理結果。 [1] 
參考資料
  • 1.    Press, William H.; Teukolsky, Saul A.; Vetterling, William T.; Flannery, Brian P. (2007). Numerical recipes: the art of scientific computing. Cambridge University Press. p. 34. ISBN 978-0-521-88068-8.