<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="zh">
	<id>https://arolstar52-zhtest.hf.space/index.php?action=history&amp;feed=atom&amp;title=NaN</id>
	<title>NaN - 版本历史</title>
	<link rel="self" type="application/atom+xml" href="https://arolstar52-zhtest.hf.space/index.php?action=history&amp;feed=atom&amp;title=NaN"/>
	<link rel="alternate" type="text/html" href="https://arolstar52-zhtest.hf.space/index.php?title=NaN&amp;action=history"/>
	<updated>2026-07-18T04:59:09Z</updated>
	<subtitle>在这个wiki上该页的修订历史</subtitle>
	<generator>MediaWiki 1.43.9</generator>
	<entry>
		<id>https://arolstar52-zhtest.hf.space/index.php?title=NaN&amp;diff=450010&amp;oldid=prev</id>
		<title>imported&gt;Kunjinkao：​/* 返回NaN的运算 */</title>
		<link rel="alternate" type="text/html" href="https://arolstar52-zhtest.hf.space/index.php?title=NaN&amp;diff=450010&amp;oldid=prev"/>
		<updated>2025-11-20T09:21:36Z</updated>

		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;返回NaN的运算&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;新页面&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{NoteTA&lt;br /&gt;
|G1=IT&lt;br /&gt;
}}&lt;br /&gt;
{{distinguish|N/A}}&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;NaN&amp;#039;&amp;#039;&amp;#039;（{{langx|en|&amp;#039;&amp;#039;&amp;#039;N&amp;#039;&amp;#039;&amp;#039;ot &amp;#039;&amp;#039;&amp;#039;a&amp;#039;&amp;#039;&amp;#039; &amp;#039;&amp;#039;&amp;#039;N&amp;#039;&amp;#039;&amp;#039;umber}}，非数），是[[计算机科学]]中数值[[数据类型]]的一类[[值 (電腦科學)|值]]，表示[[未定義 (數學)|未定义]]或不可表示的[[值]]。常在[[浮点数]]运算中使用。首次引入NaN的是1985年的[[IEEE 754]]浮点数标准。&lt;br /&gt;
&lt;br /&gt;
== 浮点数 ==&lt;br /&gt;
在浮点数运算中，NaN与[[无穷|无穷大]]的概念不同，尽管两者均是以浮点数表示实数时的特殊值。无效操作（{{lang|en|Invalid Operation}}）同样也不同于[[算術溢出]]（可能返回无穷大）和算术下溢出（可能返回最小的一般数值、特殊数值、零等）。&lt;br /&gt;
&lt;br /&gt;
[[IEEE 754]]-1985中，用指数部分全为1、小数部分非零表示NaN。以32位IEEE单精度浮点数的NaN为例，按位表示即：&amp;lt;code&amp;gt;S111 1111 1AXX XXXX XXXX XXXX XXXX XXXX&amp;lt;/code&amp;gt;，S为符号位，符号位S的取值无关紧要；A是小数部分的最高位（{{lang|en|the most significant bit of the significand}}），其取值表示了NaN的类型：小数部分不能全为0，小数部分除了A之外的部分被称为NaN的payload；{{NoteTag|如果浮点数的小数部分全为零，则该数为浮点[[无穷大]]。}}&lt;br /&gt;
* 大多数处理器，包括[[Intel]]与[[AMD]]的[[x86]]系列、[[Motorola]]的{{tsl|en|Motorola 68000 series|68000系列}}、[[AIM联盟|AIM]]的[[PowerPC]]系列、[[ARM架構|ARM]]系列、[[昇陽電腦|Sun]]的[[SPARC]]系列，采取了A为&amp;lt;code&amp;gt;is_quiet&amp;lt;/code&amp;gt;标记位。即，如果A = 1，则该数是quiet NaN；如果A为零、其余X部分非零，则是signaling NaN。IEEE 754-2008标准采纳了这一方案。&lt;br /&gt;
* [[PA-RISC]]与[[MIPS架構|MIPS]]处理器，采取了A为&amp;lt;code&amp;gt;is_signaling&amp;lt;/code&amp;gt;标记位。恰与上述相反。&lt;br /&gt;
&lt;br /&gt;
=== 与NaN值的比较 ===&lt;br /&gt;
IEEE 754标准定义了NaN值的比较方式。对两个浮点数作比较时，认为NaN是一个无顺序的、与任何数值都不相等的数值，而且会忽略NaN值中的符号位。&lt;br /&gt;
&lt;br /&gt;
当NaN与另一个浮点数x（其中x可为正常值、正负[[无穷大]]或NaN）进行比较时，比较结果如下：&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align: center&amp;quot;&lt;br /&gt;
! 比较&lt;br /&gt;
| NaN ≥ &amp;#039;&amp;#039;x&amp;#039;&amp;#039;&lt;br /&gt;
| NaN ≤ &amp;#039;&amp;#039;x&amp;#039;&amp;#039;&lt;br /&gt;
| NaN &amp;gt; &amp;#039;&amp;#039;x&amp;#039;&amp;#039;&lt;br /&gt;
| NaN &amp;lt; &amp;#039;&amp;#039;x&amp;#039;&amp;#039;&lt;br /&gt;
| NaN = &amp;#039;&amp;#039;x&amp;#039;&amp;#039;&lt;br /&gt;
| NaN ≠ &amp;#039;&amp;#039;x&amp;#039;&amp;#039;&lt;br /&gt;
|-&lt;br /&gt;
! 结果&lt;br /&gt;
| False&lt;br /&gt;
| False&lt;br /&gt;
| False&lt;br /&gt;
| False&lt;br /&gt;
| False&lt;br /&gt;
| True&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
由上表可知，判断一个值是否为NaN时，不能通过判断x=NaN或x≠NaN来进行比较，但因为NaN永远不等于其自身，因此可通过判断x=x或x≠x来判断x是否为NaN值（分别返回False和True）。&lt;br /&gt;
&lt;br /&gt;
=== 返回NaN的运算 ===&lt;br /&gt;
返回NaN的运算有如下三种&amp;lt;ref&amp;gt;David Goldberg [http://docs.sun.com/source/806-3568/ncg_goldberg.html What Every Computer Scientist Should Know About Floating-Point] {{Wayback|url=http://docs.sun.com/source/806-3568/ncg_goldberg.html |date=20070329093550 }}&amp;lt;/ref&amp;gt;：&lt;br /&gt;
* 至少有一个[[參數 (程式設計)|參数]]是NaN的运算{{NoteTag|在某些编程语言中，NaN&amp;lt;sup&amp;gt;0&amp;lt;/sup&amp;gt;等于1。}}&lt;br /&gt;
* [[不定式 (數學)|不定式]]&lt;br /&gt;
** 下列[[除法]]运算：0/0、[[∞]]/∞、∞/(−∞)、(−∞)/∞、(−∞)/(−∞)&lt;br /&gt;
** 下列求[[余数]]运算：任意值%0、∞%任意值&lt;br /&gt;
** 下列[[乘法]]运算：0×∞、0×−∞&lt;br /&gt;
** 下列[[加法]]运算：∞ + (−∞)、(−∞) + ∞&lt;br /&gt;
** 下列[[减法]]运算：∞ - ∞、(−∞) - (−∞)&lt;br /&gt;
** 下列[[指数函数|指數]]運算：[[0的0次方|0&amp;lt;sup&amp;gt;0&amp;lt;/sup&amp;gt;]]、∞&amp;lt;sup&amp;gt;0&amp;lt;/sup&amp;gt;、1&amp;lt;sup&amp;gt;∞&amp;lt;/sup&amp;gt;{{NoteTag|在某些编程语言中，0&amp;lt;sup&amp;gt;0&amp;lt;/sup&amp;gt;、∞&amp;lt;sup&amp;gt;0&amp;lt;/sup&amp;gt;和1&amp;lt;sup&amp;gt;∞&amp;lt;/sup&amp;gt;均等于1。}}、∞&amp;lt;sup&amp;gt;−∞&amp;lt;/sup&amp;gt;&lt;br /&gt;
* 产生[[复数 (数学)|复数]]结果或无意义结果的实数运算。例如：&lt;br /&gt;
** 对[[负数]]进行[[开方|开偶次方]]的运算&lt;br /&gt;
** 对负数（包含−∞）进行[[对数]]运算&lt;br /&gt;
** 对[[正弦]]或[[餘弦]][[到达域]]以外的数进行[[反正弦]]或[[反餘弦]]运算&lt;br /&gt;
&lt;br /&gt;
是否返回NaN与编程语言有关。有些编程语言在进行以上运算时会引发异常，而另一些编程语言则会返回NaN值，不会引发异常或中止程序。&lt;br /&gt;
&lt;br /&gt;
== 整数的NaN ==&lt;br /&gt;
大多数定长的[[整数]]格式无法显式表示无效数据。&lt;br /&gt;
&lt;br /&gt;
[[Perl]]的BigInt包用“NaN”来表示不含有效整数数据字符串的处理结果。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt; &amp;gt;perl -mMath::BigInt -e &amp;quot;print Math::BigInt-&amp;gt;new(&amp;#039;foo&amp;#039;)&amp;quot; &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt; NaN &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 注释 ==&lt;br /&gt;
{{NoteFoot}}&lt;br /&gt;
&lt;br /&gt;
== 参考文献 ==&lt;br /&gt;
{{Reflist}}&lt;br /&gt;
&lt;br /&gt;
== 外部链接 ==&lt;br /&gt;
* http://foldoc.org/?Not-a-Number{{Wayback|url=http://foldoc.org/?Not-a-Number |date=20080314163652 }}&lt;br /&gt;
&lt;br /&gt;
[[Category:計算機算術]]&lt;br /&gt;
[[Category:软件异常]]&lt;br /&gt;
[[Category:字首縮寫]]&lt;/div&gt;</summary>
		<author><name>imported&gt;Kunjinkao</name></author>
	</entry>
</feed>