什么是inf和nan?

时间:2013-07-13 08:59:18

标签: python python-2.7

只是一个我对此感到困惑的问题

所以我正在弄乱float('inf'),并想知道它的用途。

另外我注意到,如果我添加-inf + inf,我会nan与零相同。

我对这两个值的用途感到困惑。

同样当我nan - inf我没有得到-inf我得到nan我确信这一切都很简单,但我偶然发现它们并且不知道他们做了什么

5 个答案:

答案 0 :(得分:43)

inf是无穷大 - 一个大于任何其他值的值。因此,-inf小于任何其他值。

nan代表Not A Number,这不等于0

虽然正负无穷大可以说对0是对称的,但对于任何值n都可以这样说,这意味着添加两者的结果会产生nan。这个想法在this math.se question中进行了讨论。

因为nan(字面上)不是数字,所以你不能用它算术,所以第二次操作的结果也不是数字(nan

答案 1 :(得分:3)

Inf是无穷大,它是“比所有其他数字更大”的数字。尝试从中减去任何你想要的东西,它不会变小。所有数字均为< Inf-Inf类似,但比所有内容都要小。

NaN表示非数字。如果你尝试进行一些没有意义的计算,你会得到NaNInf - Inf就是这样一个计算。通常NaN用于表示缺少某些数据。

答案 2 :(得分:2)

nan表示“非数字”,如果您执行的计算结果不能表示为数字,则会获得浮点值。您使用NaN执行的任何计算也会产生NaN

inf表示无限。

例如:

>>> 2*float("inf")
inf
>>> -2*float("inf")
-inf
>>> float("inf")-float("inf")
nan

答案 3 :(得分:2)

你说:

  

当我做nan - inf时我得不到-inf我得nan

这是因为包含NaN作为操作数的任何操作都将返回NaN

NaN进行比较会返回无序结果

>>> float('Inf') == float('Inf')
True
>>> float('NaN') == float('NaN')
False

答案 4 :(得分:0)

我使用inf / -inf作为初始值来查找测量的最小/最大值。假设您使用传感器测量温度,并且想要跟踪最低/最高温度。传感器可能提供了有效的温度,或者可能已损坏。伪代码:

<table width="100%" border="0" cellspacing="0" cellpadding="0">
  <tbody>
    <tr>
      <td align="left" style="-moz-osx-font-smoothing: grayscale; -webkit-font-smoothing: antialiased; border-collapse: collapse; color: #4e5054; font-family: 'Verdana', 'Arial', 'Helvetica', sans-serif; font-size: 12px; font-smoothing: antialiased; font-weight: normal; line-height: 18px; margin: 0; padding: 0; vertical-align: top; padding-bottom:0;"><!-- stat -->
        
        <table width="100%" border="0" cellspacing="0" cellpadding="0" bgcolor="#e5e5e5">
          <tr>
            <td align="center" style="padding-top:20px; padding-bottom:20px;"><table width="100%" border="0" cellspacing="0" cellpadding="0"  style="display:block; max-width:600px;" class="wrapto680px">
                <tr>
                  <td width="100%" valign="top" align="center" style="text-align:center; font-size:0px;"><!--[if (gte mso 9)|(IE)]><table width="600" border="0" cellspacing="0" cellpadding="0"><tr><td valign="top" width="600"><![endif]-->
                    
                    <div style="display:inline-block;" class="ecxmarginhack">
                      <table width="600" border="0" cellspacing="0" cellpadding="0" align="left">
                        <tr>
                          <td width="100%" valign="top"><table width="150" border="0" cellspacing="0" cellpadding="0" align="left" style="border-collapse:collapse; mso-table-lspace:0pt; mso-table-rspace:0pt;">
                              <tr>
                                <td style="font-size:0px;"><img style="display:block;" border="0" src="http://www.stevensegallery.com/200/200" width="150" height="150" alt=""/></td>
                              </tr>
                            </table>
                            <table width="150" border="0" cellspacing="0" cellpadding="0" align="left" style="border-collapse:collapse; mso-table-lspace:0pt; mso-table-rspace:0pt;">
                              <tr>
                                <td style="font-size:0px;"><img style="display:block;" border="0" src="http://www.stevensegallery.com/200/200" width="150" height="150" alt=""/></td>
                              </tr>
                            </table>
                            <table width="150" border="0" cellspacing="0" cellpadding="0" align="left" style="border-collapse:collapse; mso-table-lspace:0pt; mso-table-rspace:0pt;">
                              <tr>
                                <td style="font-size:0px;"><img style="display:block;" border="0" src="http://www.stevensegallery.com/200/200" width="150" height="150" alt=""/></td>
                              </tr>
                            </table>
                            <table width="150" border="0" cellspacing="0" cellpadding="0" align="left" style="border-collapse:collapse; mso-table-lspace:0pt; mso-table-rspace:0pt;">
                              <tr>
                                <td style="font-size:0px;"><img style="display:block;" border="0" src="http://www.stevensegallery.com/200/200" width="150" height="150" alt=""/></td>
                              </tr>
                            </table></td>
                        </tr>
                      </table>
                    </div>
                    
                    <!--[if (gte mso 9)|(IE)]></td></tr></table><![endif]--></td>
                </tr>
              </table>
              
              <!-- end 4 col --></td>
          </tr>
        </table>
        
        <!-- End --></td>
    </tr>
  </tbody>
</table>

以上代码之所以有效,是因为inf / -inf / nan对最小/最大运算有效,因此无需处理异常。